LeetCodeTop100 题目
1 两数之和 42.20% Easy
2 两数相加 30.70% Medium
3 无重复字符的最长子串 28.00% Medium
4 寻找两个有序数组的中位数 25.60% Hard
5 最长回文子串 26.70% Medium
10 正则表达式匹配 25.00% Hard
11 盛最多水的容器 42.80% Medium
15 三数之和 23.50% Medium
17 电话号码的字母组合 40.50% Medium
19 删除链表的倒数第N个节点 34.00% Medium
20 有效的括号 36.00% Easy
21 合并两个有序链表 46.00% Easy
22 括号生成 53.30% Medium
23 合并K个排序链表 33.10% Hard
31 下一个排列 30.10% Medium
32 最长有效括号 25.00% Hard
33 搜索旋转排序数组 32.70% Medium
34 在排序数组中查找元素的第一个和最后一个位置 33.00% Medium
39 组合总和 46.90% Medium
42 接雨水 42.00% Hard
46 全排列 53.60% Medium
48 旋转图像 47.00% Medium
49 字母异位词分组 45.00% Medium
53 最大子序和 42.90% Easy
55 Jump Game 31.40% Medium
56 合并区间 34.90% Medium
62 不同路径 46.50% Medium
64 最小路径和 45.70% Medium
70 爬楼梯 43.50% Easy
72 编辑距离 36.50% Hard
75 颜色分类 41.40% Medium
76 最小窗口字串 29.90% Hard
78 子集 51.20% Medium
79 单词搜索 30.50% Medium
84 柱状图中最大的矩形 30.30% Hard
85 最大矩形 32.50% Hard
94 二叉树的中序遍历 55.20% Medium
96 不同的二叉搜索树 45.20% Medium
98 验证二叉搜索树 25.30% Medium
101 对称二叉树 42.80% Easy
102 二叉树的层次遍历 47.20% Medium
104 二叉树的最大深度 59.30% Easy
105 从前序与中序遍历序列构造二叉树 39.60% Medium
114 二叉树展开为链表 41.20% Medium
121 买卖股票的最佳时机 46.30% Easy
124 求二叉树的最大路径和 29.40% Hard
128 最长连续序列 41.00% Hard
136 只出现一次的数字 59.10% Easy
139 单词拆分 34.40% Medium
141 环形链表 35.90% Easy
142 环形链表 II 31.00% Medium
146 LRU缓存机制 24.20% Medium
148 排序链表 34.10% Medium
152 乘积最大子序列 28.60% Medium
155 最小栈 35.80% Easy
160 相交链表 32.40% Easy
169 求众数 51.60% Easy
198 打家劫舍 40.80% Easy
200 岛屿的个数 40.40% Medium
206 反转链表 52.90% Easy
207 课程表 36.80% Medium
208 实现 Trie (前缀树) 36.90% Medium
215 数组中的第K个最大元素 46.20% Medium
221 最大正方形 32.30% Medium
226 翻转二叉树 57.10% Easy
234 回文链表 35.40% Easy
236 二叉树的最近公共祖先 35.60% Medium
238 除自身以外数组的乘积 54.00% Medium
239 滑动窗口最大值 37.20% Hard
240 搜索二维矩阵 II 40.30% Medium
253 会议室 II 42.30% Medium
279 完全平方数 41.00% Medium
283 移动零 53.70% Easy
287 寻找重复数 48.50% Medium
297 二叉树的序列化和反序列化 39.50% Hard
300 最长上升子序列 40.30% Medium
301 移除非法括号 38.50% Hard
309 最佳买卖股票时机含冷冻期 43.50% Medium
312 打气球游戏 46.40% Hard
322 零钱兑换 29.20% Medium
337 题目337.打家劫舍之三 47.40% Medium
338 比特位计数 64.00% Medium
347 前K个高频元素 53.60% Medium
394 解码字符串 44.00% Medium
399 除法求值 47.40% Medium
406 题目406.根据身高重建队列 59.00% Medium
416 题目416.分割等和子集 40.00% Medium
437 二叉树中和为某一值的路径三 42.00% Easy
438 找到字符串中所有字母异位词 36.50% Easy
448 找到所有数组中消失的数字 52.80% Easy
461 汉明距离 70.10% Easy
494 目标和 44.90% Medium
538 把二叉搜索树转换为累加树 50.00% Easy
543 二叉树的直径 46.20% Easy
560 和为K的子数组 41.70% Medium
581 最短无序连续子数组 29.60% Easy
617 合并二叉树 69.30% Easy
621 Task Scheduler 44.50% Medium
647 回文子串 56.00% Medium
739 每日温度 59.80% Medium
771 珠宝和石头 83.00% Easy
自我总结:
1.反转链表:
class Solution:
# 返回ListNode
def ReverseList(self, pHead):
# write code here
if pHead == None or pHead.next == None:#若链表为空或只有一个数就直接返回0
return pHead
pre = None#定义一个空链表
while pHead:
nex = pHead.next
pHead.next = pre
pre = pHead#指针后移
pHead = nex#指针后移
return pre
2.数组排序 可直接return sorted(arr)
class Solution:
def MySort(self , arr ):
len_1 = len(arr)
list_1 = []
for i in range(len_1):
list_1.append(arr[i])
list_1.sort()
return list_1
3.判断链表是否有环
class Solution:
def hasCycle(self , head ):
# write code here
if head is None or head.next is None:
return False
first = head.next
last = head.next.next
while last is not None:
if first.val == last.val:
return True
first = first.next
if last.next is None or last.next.next is None:
return False
last = last.next.next
return False
4.分别按照二叉树先序,中序和后序打印所有的节点。
class Solution:
def threeOrders(self , root ):
ans = [[],[],[]]
def dfs(root):
if not root:
return
ans[0].append(root.val)
dfs(root.left)
ans[1].append(root.val)
dfs(root.right)
ans[2].append(root.val)
return
dfs(root)
return ans
5.二分查找
class Solution:
def upper_bound_(self , n , v , a ):
# write code here
if a[-1]<v:
return n+1
left = 0
right = n-1
while left<right:
mid = (left+right)//2
if a[mid]>=v:
right = mid
if a[mid]<v:
left = mid+1
return left+1