摘要:
题目如下: 解题思路:巨坑的一个题目。一般来说,leetcode这一类题目分为两种形式,一种是问能不能分割/有几种分割的方法,一种是列出所有分割的集合。本题是第二种,但是有一些特别坑的用例,其结果是无法分割,又非常容易超时。因此解题方法需要先判断能不能分割,能的话再计算怎么分割。首先看能不能分割:可 阅读全文
摘要:
题目如下: 解题思路:DFS或者BFS都行。本题的关键在于减少重复计算。我采用了两种方法:一是用字典dic_ladderlist记录每一个单词可以ladder的单词列表;另外是用dp数组记录从startword开始到wordlist每一个word的最小转换次数,这一点非常重要,可以过滤很多无效的运算 阅读全文
摘要:
题目如下: 解题思路:本题和【leetcode】97. Interleaving String非常相似,同样可以采用动态规划的方法。记dp[i][j] = 1或者0 表示pattern[0:i]是否匹配string[0:j] ,如果pattern[i] == string[j] 或者 pattern 阅读全文
摘要:
题目如下: 解题思路:对于任意一个word,要找出在wordlist中是否存在与之能组成回文的其他words,有两种思路。一是遍历wordlist;二是对word本身进行分析,找出能组成回文的words,并判断是否存在于wordlist中。显然,第二种思路比较的次数要少很多。怎么找出能组成回文的wo 阅读全文
摘要:
题目如下: 解题思路:本题有两个维度(宽和高),必须两个维度同时满足条件才行。我们可以把输入数组按其中一个维度排序,例如按宽从小到大排序,如果宽相等,再比较高。这样的话,对于数组中任意一个元素(信封),能够放入该信封的其他信封一定在该信封所在位置的左边。接下来从头开始遍历数组,因为宽度是递增的,因此 阅读全文