随笔分类 -  刷题笔记

保持每天刷题,记录笔记。
摘要:题目: 给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值。 这条路径可以经过也可以不经过根节点。 注意: 两个节点之间的路径长度由它们之间的边数表示。 示例: 输入: 5 / \ 4 5 / \ \ 1 1 5 输出:2 输入: 1 / \ 4 5 / \ \ 4 4 5 输出:2 分 阅读全文
posted @ 2020-08-12 09:05 有心有梦 阅读(237) 评论(0) 推荐(0)
摘要:题目: 在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房 阅读全文
posted @ 2020-08-11 07:14 有心有梦 阅读(230) 评论(0) 推荐(0)
摘要:题目 编写一个程序,找到两个单链表相交的起始节点。如下图所示的两个链表: A、B两个链表交于C1这个结点。 示例: 输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3 输出:Ref 阅读全文
posted @ 2020-08-09 08:40 有心有梦 阅读(104) 评论(0) 推荐(0)
摘要:题目: 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 示例: 输入: 1->1->2 输出: 1->2 输入: 1->1->2->3->3 输出: 1->2->3 分析: 因为是有序的链表,所以好处理的多,因为如果某个元素含有重复的,当这个元素第一次出现的时候,其后面若干位置一定是 阅读全文
posted @ 2020-08-08 11:14 有心有梦 阅读(122) 评论(0) 推荐(0)
摘要:题目: 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 解法一:非递归,循环遍历合并 public ListNode mergeTwoLists(ListNode 阅读全文
posted @ 2020-08-07 13:55 有心有梦 阅读(167) 评论(0) 推荐(0)
摘要:题目 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n 保证是有效的。 分析: 设length为链表的长度,删除倒数第n个元素,其实 阅读全文
posted @ 2020-08-06 06:17 有心有梦 阅读(76) 评论(0) 推荐(0)
摘要:第234题 请判断一个链表是否为回文链表。 示例 输入: 1->2 输出: false 输入: 1->2->2->1 输出: true 分析 回文链表就是链表中的元素是对称相等的,通过这个特点,可以借助于栈,如果链表的元素个数是奇数个,那么就将最中间元素左边的元素存入栈,然后再依次出栈与中间元素的右 阅读全文
posted @ 2020-08-05 07:28 有心有梦 阅读(149) 评论(0) 推荐(0)
摘要:第104题: 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7 返回它的最大深度 3 。 分析: 题目给出了最大 阅读全文
posted @ 2020-08-04 08:11 有心有梦 阅读(212) 评论(0) 推荐(0)
摘要:题目: 给定一个头结点为 root 的链表, 编写一个函数以将链表分隔为 k 个连续的部分。每部分的长度应该尽可能的相等: 任意两部分的长度差距不能超过 1,也就是说可能有些部分为 null。这k个部分应该按照在链表中出现的顺序进行输出,并且排在前面的部分的长度应该大于或等于后面的长度。返回一个符合 阅读全文
posted @ 2020-07-30 11:22 有心有梦 阅读(150) 评论(0) 推荐(0)
摘要:题目: 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例: 给定 1->2->3->4, 你应该返回 2->1->4->3. 分析: 一个链表中,两两相邻的节点交换顺序,也就是将原始链表中的节点,从左往右两两分成一组,然 阅读全文
posted @ 2020-07-25 23:41 有心有梦 阅读(224) 评论(0) 推荐(0)
摘要:题目: 反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 准备工作,定义一个ListNode类,作为结点类型: public class ListNode { int val; ListNode next; ListNode(i 阅读全文
posted @ 2020-07-25 07:22 有心有梦 阅读(132) 评论(0) 推荐(0)
摘要:题目: 给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。 返回 s 所有可能的分割方案。 示例: 输入: "aab" 输出: [ ["aa","b"], ["a","a","b"] ] 分析: 先分析重要的点,第一求的的子串,子串!子串就要求必须是连续的一串字符序列,同时要求每个子 阅读全文
posted @ 2020-07-22 22:11 有心有梦 阅读(253) 评论(0) 推荐(0)
摘要:题目: 给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 示例: 输入: [1,2,2] 输出: [ [2], [1], [1,2,2], [2,2], [1,2], [] ] 分析: 需要注意的就是给定的数组中存在重复的元素,然后要求 阅读全文
posted @ 2020-07-22 21:56 有心有梦 阅读(168) 评论(0) 推荐(0)
摘要:题目: 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 示例: 输入: nums = [1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ] 分析: 子集的大小可以是 阅读全文
posted @ 2020-07-19 20:52 有心有梦 阅读(282) 评论(0) 推荐(0)
摘要:题目: 找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。 说明: 所有数字都是正整数。 解集不能包含重复的组合。 示例: 输入: k = 3, n = 7 输出: [[1,2,4]] 分析: 明确题目的限制条件:1、组合中只允许存在 阅读全文
posted @ 2020-07-19 19:17 有心有梦 阅读(196) 评论(0) 推荐(0)
摘要:题目: 给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用一次。 说明: 所有数字(包括目标数)都是正整数。解集不能包含重复的组合。 示例: 输入: can 阅读全文
posted @ 2020-07-10 00:05 有心有梦 阅读(237) 评论(0) 推荐(0)
摘要:题目: 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被选取。 说明: 所有数字(包括 target)都是正整数。解集不能包含重复的组合。 示例: 输 阅读全文
posted @ 2020-07-09 22:58 有心有梦 阅读(172) 评论(0) 推荐(0)
摘要:题目: 给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。 示例: 输入: n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] 分析: 这是一个组合问题,所以结果顺序不同并不会影响结果,不同的结果组 阅读全文
posted @ 2020-07-07 00:21 有心有梦 阅读(379) 评论(0) 推荐(0)
摘要:题目:给定一个可包含重复数字的序列,返回所有不重复的全排列。 示例: 输入: [1,1,2] 输出: [ [1,1,2], [1,2,1], [2,1,1] ] 分析: 这个题和全排列一的不同之处在于,它给定的一组元素含有重复的元素存在,那么我们进行深度递归搜索的时候,选择下一步搜索的元素的时候就要 阅读全文
posted @ 2020-07-06 09:38 有心有梦 阅读(176) 评论(0) 推荐(0)
摘要:题目: 给定一个二叉树,返回所有从根节点到叶子节点的路径。说明: 叶子节点是指没有子节点的节点。 示例: 输入: 1 / \ 2 3 \ 5 输出: ["1->2->5", "1->3"] 解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3 分析:求出所有的路径,本质还是递归回溯,遍 阅读全文
posted @ 2020-07-05 21:45 有心有梦 阅读(175) 评论(0) 推荐(0)