leetcode笔记(Python版)待更新

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]

            return n+1

        left = 0

        right = n-1

        while left

            mid = (left+right)//2

            if a[mid]>=v:

                right = mid

            if a[mid]

                left = mid+1

        return left+1

你可能感兴趣的:(编程语言,leetcode,链表,算法,数据结构,dfs)