摘要:
704. Binary Search 1.使用start+1 < end,这样保证最后剩两个数 2.mid = start + (end - start)/2,这样避免接近max-int导致的溢出 3.start、end直接等于mid 4.最后比较两个位置 35. Search Insert Pos 阅读全文
摘要:
Paint House 自己的写法: 更优的写法: https://www.cnblogs.com/grandyang/p/5319384.html 阅读全文
摘要:
55. Jump Game 第一种方法: 只要找到一个方式可以到达,那当前位置就是可以到达的,所以可以break 第二种方法: 第一种方法时间复杂度高且需要O(n)的空间复杂度。这题用贪心在O(n)的时间复杂度,O(1)的空间复杂度就可以解决。 用一个reach变量记录当前位置能达到的最远的位置索引 阅读全文
摘要:
dp的做法: 错误解法一: n=1的时候,申请的vector只有2个大小,dp[2]=2就错误了 正解: dp的做法要申请空间,会有空间消耗。可以设计参数的方式来实现: 阅读全文
摘要:
62. Unique Paths 63. Unique Paths II leetcode的例子中int会越界,所以需要用long 与Unique Paths I不同在于多了障碍物,障碍物的情况直接为0就好,在初始化的时候需要做这个操作,在dp的迭代过程中也要做,其他与Unique Paths I 阅读全文
摘要:
131. Palindrome Partitioning 一个字符串,通过不同的切分找到所有切分后的子字符串都是回文的可能性 substr使用的是坐标值,不使用.begin()、.end()这种迭代器 使用dfs,类似于subsets的题,每次判断要不要加入这个数 start每次是起始的位置,判断当 阅读全文
摘要:
127. Word Ladder 这道题使用bfs来解决,每次将满足要求的变换单词加入队列中。 wordSet用来记录当前词典中的单词,做一个单词变换生成一个新单词,都需要判断这个单词是否在词典中,不在词典中就不能加入队列。 pathCnt用来记录遍历到的某一个词使用的次数,做一个单词变换生成一个新 阅读全文
摘要:
51. N-Queens 使用isValid判断当前的位置是否合法 每次遍历一行,使用queenCol记录之前行的存储位置,一方面是用于判断合法,另一方面可以根据存储结果输出最终的结果 棋盘的斜线都是45°的,所以两个位置x的差值和y的差值应该是相等的 52. N-Queens II 这个题更像是5 阅读全文
摘要:
https://www.cnblogs.com/grandyang/p/4332522.html 数字从1到n,生成所有具有k个的组合 本质上跟subsets更像,因为回溯回来只能选下一个位置的数值,可选择的数值在减少,搜索树的形状与subsets更像。 不同的是, 不是所有的节点都是可行解了,而是 阅读全文
摘要:
graphdfsbfs 1.clone graph2.copy list with random pointer3.topological sorting4.permutations5.subsets6.n queens7.subsetsII 8.palindrome partitioning9.c 阅读全文