LeetCode #491:Increasing Subsequences(递增子序列) 题目描述 求递增子序列有点像是取有序的子集,而且本题也要求不能有相同的递增子序列,很容易就产生思维定式使用 “组合总和II” 的方法(先排序再用类似 i > startIndex && nums[i] == nums[i - 1] 的条件去重)。然而根据本题题意,nums 数组是不能排序的(不然排完序的数组就都是递增子序列了),使用之前的去重逻辑就有问题了。故本题在去重时需要设置一个 set 进行检测(由于数组的数据范围在 [-100, 100],也可换成长度为 201 的标记数组)。 阅读全文
LeetCode #131:Palindrome Partitioning(分割回文串) 题目描述 本题的核心逻辑是:依次截取串 s 的若干子串 s[0...i],其中 i 的范围为 [0, length(s) - 1]。若子串 s[0...i] 是回文串,将其加入待定答案序列 temp 中,将 s 替换为 s[i+1...] 往下一层递归执行;若 s[0...i] 不是回文串,则 i++,看 s[0...i+1] 是否是回文串。直到没有字符可划分时,划分完毕,将 temp 加入最终答案。 阅读全文
LeetCode #93:Restore IP Addresses(复原IP地址) 题目描述 本题仍然是使用回溯法来进行解决的问题。与之前问题不同的是本题基于字符串进行回溯,需要使用一系列操作字符串的函数,在做题时因为对这些函数的用法不熟悉走了一些弯路,特此记录。 阅读全文
LeetCode #47:Permutations II(全排列II) 题目描述 本题基于 LeetCode #46 的基础上进行修改即可,与 LeetCode #39 到 LeetCode #40 的修改方法十分类似,均为在原问题的基础上增加了去重。 阅读全文