第一题 89. Gray Code
题目描述
给定n表示可以有n个bit, 要求每次只能改变一个bit位,找出对于n个位所有可能的数字
算法
我们每次在最高位加1,同时利用之前的数字,不断迭代更新
|
|
第二题 139. Word Break
题目描述
给定一个字符串s和一个单词的字典dict,判断s是否可以分隔成由一个或多个字典中的单词组成的序列。
例如,给定s = “leetcode”, dict = [“leet”, “code”]
返回true,因为”leetcode”可以分隔成”leet code”。
算法
BFS
|
|
DP
|
|
第三题 140. Word Break II
题目描述
给定一个字符串s与一组单词的字典dict,在s中添加空格构造句子,使得句中的每一个单词都是字典中的单词。
返回所有可能的句子。
例如给定s = “catsanddog”, dict = [“cat”, “cats”, “and”, “sand”, “dog”].
上例的一个可行解是:[“cats and dog”, “cat sand dog”]
算法
回溯
|
|
第四题 93. Restore IP Addresses
题目描述
给定一串String,将String切成所有可能的IP地址
算法
首先,对于IP地址,注意几点:
- IP地址需要分成4段
- 每段的大小为0~255
按照这样的理解,我们即可以写出以下的算法
|
|
第五题 254. Factor Combinations
题目描述
将所有的质因数组合打印出来
算法
|
|
第六题 215. Kth Largest Element in an Array
题目描述
从一个未经排序的数组中找出第k大的元素。注意是排序之后的第k大,而非第k个不重复的元素
测试样例如题目描述
可以假设k一定是有效的, 1 ≤ k ≤ 数组长度
算法
每次获得队列尾的数字,然后将所有比队列尾数字小的调整到其左边,其余在右边。这样,每次我们就可以知道第k个大的数字,通过这样的方法,可以在不进行排序的情况下,最终获得第k个最大的数字。
|
|
第七题 414. Third Maximum Number
题目描述
给定一个整数数组,返回数组中第3大的数,如果不存在,则返回最大的数字。时间复杂度应该是O(n)或者更少。
算法
|
|
第八题 14. Longest Common Prefix
题目描述
找出几个String共同的前缀
算法
注意这题和Trie的联系
Verticle Scan
|
|
Divide and Conquer
|
|
第九题 58. Length of Last Word
题目描述
找到最后一个空格之后的那个单词的长度
算法
|
|