leetcode
leetcode 刷题记录
金戈_旭日东升
这个作者很懒,什么都没留下…
展开
-
leetcode 链表总结python
剑指 Offer 06. 从尾到头打印链表难度简单38输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Soluti.原创 2020-07-10 12:01:57 · 312 阅读 · 0 评论 -
leetcode 455. 分发饼干
class Solution: def findContentChildren(self, g: List[int], s: List[int]) -> int: g.sort() s.sort() i,j = 0,0 count = 0 while i<len(g) and j<len(s): if g[i]<=s[j]: coun...原创 2020-07-09 16:57:58 · 82 阅读 · 0 评论 -
leetcode 哈希表总结python
350. 两个数组的交集 II难度简单298给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2,2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [4,9]class Solution: def intersect(self, nums1: List[int], nums2: List[int]) -> List[i原创 2020-07-08 11:26:43 · 406 阅读 · 0 评论 -
leetcode 深度优先遍历专题python
108. 将有序数组转换为二叉搜索树难度简单505将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -10 5# Definition for a b.原创 2020-07-07 22:59:33 · 342 阅读 · 0 评论 -
leetcode 二叉树总结python(3)
872. 叶子相似的树难度简单60请考虑一颗二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个叶值序列。举个例子,如上图所示,给定一颗叶值序列为(6, 7, 4, 9, 8)的树。如果有两颗二叉树的叶值序列是相同,那么我们就认为它们是叶相似的。如果给定的两个头结点分别为root1和root2的树是叶相似的,则返回true;否则返回false。# Definition for a binary tree node.# class TreeNo...原创 2020-07-07 13:53:57 · 237 阅读 · 0 评论 -
leetcode 二叉树总结python(2)
538. 把二叉搜索树转换为累加树难度简单276给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。例如:输入: 原始二叉搜索树: 5 / \ 2 13输出: 转换为累加树: 18 / \ 20 13.原创 2020-07-07 13:42:16 · 241 阅读 · 0 评论 -
leetcode 二叉树总结python(1)
1 二叉树的前序遍历 def preorderTraversal(root: TreeNode): if root is None: return list1 = [] list1.append(root.val) if root.left: list1 += preorderTraversal(root.left) if root.right: list1 += preorderTraversal原创 2020-07-07 11:22:29 · 392 阅读 · 0 评论 -
leetcode 面试题 04.02. 最小高度树
面试题 04.02. 最小高度树难度简单35给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ class Solution: def sortedArrayToBST(self, nums: List[int]) ->...原创 2020-07-06 19:35:03 · 150 阅读 · 0 评论 -
leetcode 606. 根据二叉树创建字符串
606. 根据二叉树创建字符串难度简单126你需要采用前序遍历的方式,将一个二叉树转换成一个由括号和整数组成的字符串。空节点则用一对空括号 "()" 表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。示例 1:输入: 二叉树: [1,2,3,4] 1 / \ 2 3 / 4 输出: "1(2(4))(3)"解释: 原本将是“1(2(4)())(3())”,在你省略所有不必要的空原创 2020-07-05 22:32:43 · 117 阅读 · 0 评论 -
leetcode 501. 二叉搜索树中的众数
501. 二叉搜索树中的众数难度简单119给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。假定 BST 有如下定义:结点左子树中所含结点的值小于等于当前结点的值 结点右子树中所含结点的值大于等于当前结点的值 左子树和右子树都是二叉搜索树例如:给定 BST[1,null,2,2], 1 \ 2 / 2返回[2].提示:如果众数超过1个,不需考虑输出顺序# Definition f..原创 2020-07-05 22:11:18 · 90 阅读 · 0 评论 -
leetcode 1022. 从根到叶的二进制数之和
class Solution: def sumRootToLeaf(self, root: TreeNode) -> int: return self.dfs(root,0) def dfs(self,root,n): if not root : return 0 n = n*2 + root.val if not root.left and not root.right: ...原创 2020-07-05 21:56:13 · 109 阅读 · 0 评论 -
leetcode 104. 二叉树的最大深度
104. 二叉树的最大深度方法:递归给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度3 。# Definition for...原创 2020-04-22 20:49:14 · 94 阅读 · 0 评论 -
leetcode 1446. 连续字符
class Solution: def maxPower(self, s: str) -> int: if set(s) == s: return 1 if len(s)==1: return 1 count = 1 res=[] i=1 while i<len(s): if s[i] == s[i-1]: ...原创 2020-07-04 15:48:21 · 135 阅读 · 0 评论 -
leetcode 1417. 重新格式化字符串
1417. 重新格式化字符串难度简单4收藏分享切换为英文关注反馈给你一个混合了数字和字母的字符串s,其中的字母均为小写英文字母。请你将该字符串重新格式化,使得任意两个相邻字符的类型都不同。也就是说,字母后面应该跟着数字,而数字后面应该跟着字母。请你返回重新格式化后的字符串;如果无法按要求重新格式化,则返回一个空字符串。示例 1:输入:s = "a0b1c2"输出:"0a1b2c"解释:"0a1b2c" 中任意两个相邻字符的类型都不同。 "a0b1c2", "0a...原创 2020-07-03 16:28:04 · 206 阅读 · 0 评论 -
leetcode 1422. 分割字符串的最大得分
class Solution: def maxScore(self, s: str) -> int: S = list(s) res=[] for i in range(1,len(S)): s1=S[:i] dic1 = collections.Counter(s1) s2 = S[i:] dic2 = collections.Counter...原创 2020-07-03 08:52:29 · 291 阅读 · 0 评论 -
leetcode 345. 反转字符串中的元音字母
345. 反转字符串中的元音字母难度简单98编写一个函数,以字符串作为输入,反转该字符串中的元音字母。示例 1:输入: "hello"输出: "holle"示例 2:输入: "leetcode"输出: "leotcede"class Solution: def reverseVowels(self, s: str) -> str: S = list(s) i ,j = 0,len(S)-1 dic = {'原创 2020-07-02 19:05:57 · 79 阅读 · 0 评论 -
leetcode 1189. “气球” 的最大数量
1189. “气球” 的最大数量难度简单34给你一个字符串text,你需要使用text中的字母来拼凑尽可能多的单词"balloon"(气球)。字符串text中的每个字母最多只能被使用一次。请你返回最多可以拼凑出多少个单词"balloon"。示例 1:输入:text = "nlaebolko"输出:1示例 2:输入:text = "loonbalxballpoon"输出:2示例 3:输入:text = "leetcode"输出:0...原创 2020-07-02 15:24:07 · 197 阅读 · 0 评论 -
leetcode 709. 转换成小写字母
709. 转换成小写字母class Solution: def toLowerCase(self, str: str) -> str: s=list(str) for i in range(len(s)): if 65<=ord(s[i])<=90: s[i]=chr(ord(s[i])+32) a='' for i in s: a+原创 2020-07-02 14:03:47 · 147 阅读 · 0 评论 -
leetcode 941. 有效的山脉数组
941. 有效的山脉数组难度简单48给定一个整数数组A,如果它是有效的山脉数组就返回true,否则返回false。让我们回顾一下,如果 A 满足下述条件,那么它是一个山脉数组:A.length >= 3 在0 < i< A.length - 1条件下,存在i使得: A[0] < A[1] < ... A[i-1] < A[i] A[i] > A[i+1] > ... > A[A.length - 1] ...原创 2020-07-01 20:34:21 · 112 阅读 · 0 评论 -
leetcode 1475. 商品折扣后的最终价格
1475. 商品折扣后的最终价格难度简单7给你一个数组prices,其中prices[i]是商店里第i件商品的价格。商店里正在进行促销活动,如果你要买第i件商品,那么你可以得到与prices[j]相等的折扣,其中j是满足j > i且prices[j] <= prices[i]的最小下标,如果没有满足条件的j,你将没有任何折扣。请你返回一个数组,数组中第i个元素是折扣后你购买商品i最终需要支付的价格。示例 1:输入:p...原创 2020-07-01 15:44:23 · 192 阅读 · 0 评论 -
leetcode 989. 数组形式的整数加法
989. 数组形式的整数加法难度简单61对于非负整数X而言,X的数组形式是每位数字按从左到右的顺序形成的数组。例如,如果X = 1231,那么其数组形式为[1,2,3,1]。给定非负整数X的数组形式A,返回整数X+K的数组形式。示例 1:输入:A = [1,2,0,0], K = 34输出:[1,2,3,4]解释:1200 + 34 = 1234示例 2:输入:A = [2,7,4], K = 181输出:[4,5,5]解释:274 + 1...原创 2020-07-01 14:09:12 · 146 阅读 · 0 评论 -
leetcode 532. 数组中的K-diff数对
class Solution: def findPairs(self, nums: List[int], k: int) -> int: res = 0 c = collections.Counter(nums) for i in c: if k>0 and i+k in c or k==0 and c[i]>1: res +=1 return res...原创 2020-07-01 13:41:47 · 99 阅读 · 0 评论 -
leetcode 832. 翻转图像
832. 翻转图像难度简单171给定一个二进制矩阵Aclass Solution: def flipAndInvertImage(self, A: List[List[int]]) -> List[List[int]]: M = len(A) N = len(A[0]) for i in range(M): j,k = 0,N-1 #行反转 while j&l.原创 2020-07-01 13:22:05 · 73 阅读 · 0 评论 -
剑指 Offer 53 - I. 在排序数组中查找数字 I
剑指 Offer 53 - I. 在排序数组中查找数字 I难度简单37统计一个数字在排序数组中出现的次数。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: 2示例2:输入: nums = [5,7,7,8,8,10], target = 6输出: 0class Solution: def search(self, nums: List[int], target: int) -> int: ...原创 2020-06-30 15:16:20 · 81 阅读 · 0 评论 -
leetcode 27. 移除元素
27. 移除元素难度简单580给你一个数组nums和一个值val,你需要原地移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。示例...原创 2020-06-30 10:56:47 · 125 阅读 · 0 评论 -
leetcode 1385. 两个数组间的距离值
1385. 两个数组间的距离值难度简单12给你两个整数数组arr1,arr2和一个整数d,请你返回两个数组之间的距离值。「距离值」定义为符合此描述的元素数目:对于元素arr1[i],不存在任何元素arr2[j]满足|arr1[i]-arr2[j]| <= d。示例 1:输入:arr1 = [4,5,8], arr2 = [10,9,1,8], d = 2输出:2解释:对于 arr1[0]=4 我们有:|4-10|=6 > d=2 ...原创 2020-06-29 23:17:44 · 153 阅读 · 0 评论 -
leetcode 66. 加一
66. 加一难度简单489给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。class Solution: def plusOne(...原创 2020-06-29 20:40:33 · 77 阅读 · 0 评论 -
leetcode 661. 图片平滑器
661. 图片平滑器难度简单52包含整数的二维矩阵 M 表示一个图片的灰度。你需要设计一个平滑器来让每一个单元的灰度成为平均灰度(向下舍入) ,平均灰度的计算是周围的8个单元和它本身的值求平均,如果周围的单元格不足八个,则尽可能多的利用它们。示例 1:输入:[[1,1,1], [1,0,1], [1,1,1]]输出:[[0, 0, 0], [0, 0, 0], [0, 0, 0]]解释:对于点 (0,0), (0,2), (2,0), (2,2): 平均(3/4) = .原创 2020-06-29 20:18:19 · 296 阅读 · 0 评论 -
leetcode 1232. 缀点成线
1232. 缀点成线难度简单26在一个XY 坐标系中有一些点,我们用数组coordinates来分别记录它们的坐标,其中coordinates[i] = [x, y]表示横坐标为x、纵坐标为y的点。请你来判断,这些点是否在该坐标系中属于同一条直线上,是则返回true,否则请返回false。示例 1:输入:coordinates = [[1,2],[2,3],[3,4],[4,5],[5,6],[6,7]]输出:true示例 2:输入:co...原创 2020-06-29 19:48:40 · 92 阅读 · 0 评论 -
leetcode 697. 数组的度
697. 数组的度难度简单142给定一个非空且只包含非负数的整数数组nums, 数组的度的定义是指数组里任一元素出现频数的最大值。你的任务是找到与nums拥有相同大小的度的最短连续子数组,返回其长度。示例 1:输入: [1, 2, 2, 3, 1]输出: 2解释: 输入数组的度是2,因为元素1和2的出现频数最大,均为2.连续子数组里面拥有相同度的有如下所示:[1, 2, 2, 3, 1], [1, 2, 2, 3], [2, 2, 3, 1], [1, 2, 2], [...原创 2020-06-29 16:23:13 · 118 阅读 · 0 评论 -
leetcode 1351. 统计有序矩阵中的负数
1351. 统计有序矩阵中的负数难度简单28给你一个m* n的矩阵grid,矩阵中的元素无论是按行还是按列,都以非递增顺序排列。请你统计并返回grid中负数的数目。示例 1:输入:grid = [[4,3,2,-1],[3,2,1,-1],[1,1,-1,-2],[-1,-1,-2,-3]]输出:8解释:矩阵中共有 8 个负数。示例 2:输入:grid = [[3,2],[1,0]]输出:0示例 3:输入:grid = [[1,-1...原创 2020-06-29 09:05:23 · 187 阅读 · 0 评论 -
leetcode 1160. 拼写单词
1160. 拼写单词难度简单97给你一份『词汇表』(字符串数组)words和一张『字母表』(字符串)chars。假如你可以用chars中的『字母』(字符)拼写出words中的某个『单词』(字符串),那么我们就认为你掌握了这个单词。注意:每次拼写(指拼写词汇表中的一个单词)时,chars中的每个字母都只能用一次。返回词汇表words中你掌握的所有单词的长度之和。示例 1:输入:words = ["cat","bt","hat","tree"], c...原创 2020-06-28 21:12:50 · 120 阅读 · 0 评论 -
leetcode 26. 删除排序数组中的重复项
26. 删除排序数组中的重复项难度简单1494#双指针class Solution: def removeDuplicates(self, nums: List[int]) -> int: i = 0 for j in range(1,len(nums)): if nums[i]!=nums[j]: i+=1 nums[i]=nums[j] ret原创 2020-06-28 14:54:59 · 66 阅读 · 0 评论 -
leetcode 0~n-1中缺失的数字
剑指 Offer 53 - II. 0~n-1中缺失的数字难度简单30一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。示例 1:输入: [0,1,3]输出: 2示例2:输入: [0,1,2,3,4,5,6,7,9]输出: 8#方法一 遍历class Solution: def missingNumber(self, nums: Lis..原创 2020-06-28 13:13:08 · 265 阅读 · 0 评论 -
leetcode 107. 二叉树的层次遍历 II
107. 二叉树的层次遍历 II难度简单238给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其自底向上的层次遍历为:[ [15,7], [9,20], [3]]class Solution: def levelOrderBottom(self.原创 2020-06-02 23:33:27 · 117 阅读 · 0 评论 -
leetcode LCP 06. 拿硬币
LCP 06. 拿硬币难度简单3桌上有n堆力扣币,每堆的数量保存在数组coins中。我们每次可以选择任意一堆,拿走其中的一枚或者两枚,求拿完所有力扣币的最少次数。示例 1:输入:[4,2,1]输出:4解释:第一堆力扣币最少需要拿 2 次,第二堆最少需要拿 1 次,第三堆最少需要拿 1 次,总共 4 次即可拿完。示例 2:输入:[2,3,10]输出:8class Solution: def minCount(self, coins: List[i...原创 2020-06-01 21:59:10 · 219 阅读 · 0 评论 -
leetcode 面试题54. 二叉搜索树的第k大节点
面试题54. 二叉搜索树的第k大节点难度简单29给定一棵二叉搜索树,请找出其中第k大的节点。示例 1:输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2输出: 4示例 2:输入: root = [5,3,6,2,4,null,null,1], k = 3 5 / \ 3 6 / \ 2 4 / 1输出: 4解题思路:本文解法基于...原创 2020-06-01 20:44:04 · 189 阅读 · 0 评论 -
leetcode 面试题68 - I. 二叉搜索树的最近公共祖先
# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'T...原创 2020-06-01 08:35:07 · 149 阅读 · 0 评论 -
leetcode 面试题61. 扑克牌中的顺子
class Solution: def isStraight(self, nums: List[int]) -> bool: joker = 0 nums.sort() # 数组排序 for i in range(4): if nums[i] == 0: joker += 1 # 统计大小王数量 elif nums[i] == nums[i + 1]: return False # 若有重复...原创 2020-06-01 08:34:58 · 186 阅读 · 0 评论 -
leetcode 面试题59 - I. 滑动窗口的最大值
面试题59 - I. 滑动窗口的最大值难度简单47给定一个数组nums和滑动窗口的大小k,请找出所有滑动窗口里的最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值--------------- -----[1 3 -1] -3 5 3 6 7 3 1 [3 -1 -3] 5 ...原创 2020-06-01 08:34:45 · 193 阅读 · 0 评论