LeetCode上几道和字符串有关的动态规划问题

Word Break

题意

给出一个字符串s和一个词典,判断字符串s是否可以被空格切分成一个或多个出现在字典中的单词。 给出

s = “leetcode”,dict = [“leet”,”code”],返回 true 因为“leetcode”可以被空格切分成“leet code”

思路

凡是和字符串有关的题,在应用动态规划方法时主要有两种思路:

  • dp[i][j]表示子串s[i,j]满足某一要求
  • dp[i]表示子串s[0,i]满足某一要求

继续阅读“LeetCode上几道和字符串有关的动态规划问题”

LeetCode上几道经典的回溯法题目

把相同类型的题目放在一起总结,可以便于整理思路,理解异同。下面是LeetCode上几道比较经典的可以使用回溯法来解决的题目,也是笔试面试时常考常问的。

在找实习时我就被问了两次Subsets这道题。因此熟练掌握这几道题,面试时遇到类似的题目即使是不能一下子写出正确的代码,至少也能按照正确的思路去思考。 继续阅读“LeetCode上几道经典的回溯法题目”

LeetCode 上几道经典的排列组合题

LeetCode 上有几道题都和排列组合有关,非常经典,值得放在一起总结一下。这几道题分别是:

  • Permutations。给定一组各不相同的数字,求这些数字的所有排列。
  • Permutations II。给定一组数字,这些数字中可能有重复的,求这些数字的所有不重复的排列。
  • Next Permutation。给定一组数字的全排列中的一个排列,求这个排列的下一个排列。
  • Permutation Sequence。给定一组数字和一个数字 K,求这组数字的全排列中,按照字典序顺序排序的第 K 个排列。

继续阅读“LeetCode 上几道经典的排列组合题”