Leetcode11-20
11、盛最多水的容器https://leetcode-cn.com/problems/container-with-most-water/
在最开始,我们将连个指针分别指向头尾,此时的底部最大,要想增大盛水面积,我们只能通过增大高度来实现。注意我们每次移动底部只会少1,那么就意味着我们应该向着高度更高的地方移动。
1 | class Solution { |
12、整数转罗马数字 https://leetcode-cn.com/problems/integer-to-roman/
枚举所有情况
1 | class Solution { |
13、罗马数字转整数 https://leetcode-cn.com/problems/roman-to-integer/
利用哈希表做简单的映射即可
1 | class Solution{ |
14、最长公共前缀 https://leetcode-cn.com/problems/longest-common-prefix/\\
1 | class Solution{ |
15、三数之和 https://leetcode-cn.com/problems/3sum/
与之前的两数之和类似,不过这里多了一个去重的操作,为了更加方便去重,我们对数组先排序,让相等的两个数都挨着。
1 | class Solution { |
16、最接近的三数之和 https://leetcode-cn.com/problems/3sum-closest/
与上述三数之和基本思想一样。
1 | class Solution { |
17、电话号码的字母组合 https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/
dfs+回溯
1 | class Solution{ |
18、四数之和 https://leetcode-cn.com/problems/4sum/
受之前最接近的三数之和的启发,在这边我们引入剪枝策略。 大致情况和三数之和类似
如果不引入剪枝,效果大概差了8倍左右
1 | class Solution { |
不剪枝的代码
1 | class Solution { |
19、删除链表的倒数第N个节点 https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/
受之前寻找链表中倒数第N个节点的启发,我们在这里寻找倒数第k个节点,然后进行删除操作,有可能要删除第一个节点,此时我们引入dummyNode
1 | class Solution { |
20、有效的括号 https://leetcode-cn.com/problems/valid-parentheses/
利用栈后进先出的特性,我们将所有的左括号全部入栈,然后一一比对
1 | class Solution { |