leetcode刷题
毛毛苦练吉吉国王
这个作者很懒,什么都没留下…
展开
-
leetcode每日一题20200720,167.两数之和Ⅱ
1.题目2.题目意思在列表中找出两个数,使其和等于给定的targettargettarget,返回对应下标。三个需要注意的地方:返回的下标是从1而不是从0开始的。仅有唯一答案。列表元素有序。3.代码解法一:class Solution: def twoSum(self, numbers: List[int], target: int) -> List[int]: le, ri = 0, len(numbers)-1 while le &l原创 2020-07-20 11:50:06 · 264 阅读 · 0 评论 -
leetcode刷题209.长度最小的子数组
1.题目原创 2020-07-19 22:50:23 · 186 阅读 · 0 评论 -
leetcode刷题41.缺失的第一个正数
1.题目2.题目意思给定一个未排序的整数数列,找出未出现的最小正整数,比如[1,2,0,3,5][1,2,0,3,5][1,2,0,3,5],则未出现的最小正整数为4.3.代码class Solution: def firstMissingPositive(self, nums: List[int]) -> int: for i,a in enumerate(nums): #负数和超过数组大小的不需要考虑,因为这种情况下,1-N没有填满数组原创 2020-07-19 22:02:36 · 135 阅读 · 0 评论 -
20200624leetcode每日一题49.字母异位词分组
1.题目2.题目意思题目给一个数组,数组中包含不同的单词,有些单词的构成是一样的,将他们合在一起,输出。3.代码解法1:class Solution: def groupAnagrams(self, strs: List[str]) -> List[List[str]]: res = [] dic = {} for s in strs: keys = "".join(sorted(s))原创 2020-06-24 20:50:52 · 138 阅读 · 0 评论 -
leetcode刷题15.三数之和
1.题目2.题目意思在列表中找出三个和为0的数,返回他们。3.代码我的超时代码:class Solution: def threeSum(self, nums: List[int]) -> List[List[int]]: nums.sort() ans = [] n = len(nums) for i in range(n-2): for j in range(i+1, n-1):原创 2020-05-18 15:11:43 · 140 阅读 · 0 评论 -
leetcode每日一题236.二叉树的最近公共祖先
1.题目2.题目意思题目中说的很清楚了3.代码# 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: 'TreeNod原创 2020-05-16 14:15:43 · 94 阅读 · 0 评论 -
leetcode每日一题:221.最大正方形
1.题目2.题目意思找出矩阵中由“1”构成的最大正方形,返回面积3.代码class Solution: def maximalSquare(self, matrix: List[List[str]]) -> int: if not matrix or not matrix[0]: return 0 m, n = len(matrix), len(matrix[0]) dp = [[0]*(n+1) for _ i原创 2020-05-16 13:55:03 · 175 阅读 · 0 评论 -
20200516leetcode每日一题:25. K 个一组翻转链表
1.题目2.题目意思题中给定一个整数k和一个链表,将链表每k个翻转一次,不足k个则不翻转3.代码# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def reverseKGroup(self, head: ListNode, k: int)原创 2020-05-16 10:26:36 · 138 阅读 · 0 评论 -
leetcode20200511每日一题-50. Pow(x, n)
1.题目2.题目意思自己实现x的n次幂计算函数。3.代码class Solution: def myPow(self, x: float, n: int) -> float: res = 1.0 flag = True if n<0: flag = False n = -n i = n while i != 0: if i%2原创 2020-05-11 12:47:03 · 130 阅读 · 0 评论 -
leetcode每日刷题-53.最大子序和
1.题目2.题目意思很好理解3.代码class Solution: def maxSubArray(self, nums: List[int]) -> int: for i in range(1, len(nums)): nums[i] = nums[i] + max(nums[i-1], 0) return max(nums)思路:原地操作~将数组的每个元素更新,前面的数累加的是正数,则加起来更大;如果是负数,则不变。如原创 2020-05-10 21:07:01 · 168 阅读 · 0 评论 -
leetcode20200423每日一题-21. 合并两个有序链表
1.题目2.题目意思合并两个链表,很好理解~3.代码解法1:# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def merge...原创 2020-05-01 02:18:28 · 172 阅读 · 0 评论 -
leetcode20200423每日一题-面试题56 - I. 数组中数字出现的次数
1.题目2.题目意思数组中的数字都是成对的,有两个数除外。找出这两个。另外注意时间复杂度O(n),空间复杂度O(1)。太苛刻了!3.代码class Solution: def singleNumbers(self, nums: List[int]) -> List[int]: ret, index = 0, 0 # step1 找出两个数做异...原创 2020-04-28 14:45:53 · 116 阅读 · 0 评论 -
leetcode20200423每日一题-33.搜索旋转排序数组
1.题目2.题目意思数组被旋转了,给你一个target,返回在数组中的位置,否则,返回-1。3.代码class Solution: def search(self, nums: List[int], target: int) -> int: if len(nums) == 0: return -1 l...原创 2020-04-27 11:20:25 · 98 阅读 · 0 评论 -
leetcode20200423每日一题-23.合并k个链表
1.题目2.题目意思对输入链表集中的元素从小到大进行排序。3.代码# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def mer...原创 2020-04-26 16:15:53 · 99 阅读 · 0 评论 -
leetcode20200423每日一题-(15)46.全排列
1.题目2.题目意思排列组合嘛~3.代码解法1:class Solution: def permute(self, nums: List[int]) -> List[List[int]]: return list(itertools.permutations(nums))思路:python函数君子生非异也,善假于物也。itertools.permu...原创 2020-04-25 09:57:30 · 117 阅读 · 0 评论 -
leetcode20200424每日一题-面试题51.数组中的逆序对
1.题目2.题目意思计算逆序对的总数。3.代码class Solution: def reversePairs(self, nums: List[int]) -> int: q = [] res = 0 for v in nums: i = bisect.bisect_left(q,-v) ...原创 2020-04-24 12:27:48 · 203 阅读 · 0 评论 -
leetcode20200423每日一题-面试题08.11.硬币
1.题目2.题目意思拿硬币,看看有多少种情况。3.代码class Solution: def waysToChange(self, n: int) -> int: l = [25,10,5,1] dp = [0]*(n+1) dp[0] = 1 for i in range(len(l)): ...原创 2020-04-23 23:01:34 · 172 阅读 · 0 评论 -
leetcode10:正则表达式匹配(三种解法)
1. 题目2.题目意思写一个正则表达式出来。3.代码解法1:class Solution: def isMatch(self, s, p): s_len = len(s) p_len = len(p) if p_len == 0: return s_len==0 # 如果长度为0,返回s是否长度为0 ...原创 2020-04-20 11:38:19 · 259 阅读 · 0 评论 -
leetcode20200420每日一题-200.岛屿数量
1.题目2.题目意思1表示陆地,2表示水,找出所有的岛屿。几块陆地连在一起也是一块岛屿。3.代码class Solution: def numIslands(self, grid: List[List[str]]) -> int: if len(grid) == 0: return 0 a = [(1, 0), (-1...原创 2020-04-20 09:04:08 · 136 阅读 · 0 评论 -
leetcode20200418每日一题-11.盛最多水的容器
1.题目2.题目意思如图所示,给定一个列表,列表里每个数作为一个柱子,找出两个柱子,使得接的水最多。3.代码class Solution: def maxArea(self, height: List[int]) -> int: res=0 i=0 j=len(height)-1 while i<j: ...原创 2020-04-18 11:04:00 · 159 阅读 · 0 评论 -
leetcode20200417每日一题-55.跳跃游戏
1.题目2.题目意思就是能不能到最后一格。简单分析,除了最后一个数,其他数要是不等于0就一定可以到;如果中间有0,只要前面有数能跨过去,就也行。3.代码解法1:class Solution: def canJump(self, nums: List[int]) -> bool: start = 0 end = 0 n = l...原创 2020-04-17 13:32:53 · 183 阅读 · 0 评论 -
leetcode刷题-5.最长回文子串(三种解法)
1.题目2.题目意思找出回文串,注意bad不是回文串,bab才是。特殊情况就是空字符串返回空,单个字符串返回单个,无回文串返回第一个字母。3.代码解法1:class Solution: def longestPalindrome(self, s: str) -> str: m = len(s) if m == 0: ...原创 2020-04-16 16:31:11 · 160 阅读 · 0 评论 -
leetcode20200416每日一题-56.合并区间
1.题目2.题目意思合并区间,存在相交就合并,否则不合并。注意,三个区间相交也要合并。3.代码class Solution: def merge(self, intervals: List[List[int]]) -> List[List[int]]: if intervals == []: return [] int...原创 2020-04-16 08:49:39 · 135 阅读 · 0 评论 -
leetcode20200415每日一题-542.01矩阵
1.题目2.题目意思矩阵由01组成,找出矩阵每个元素到最近的0的距离。显然,0到0的距离就是0.3.代码解法一:class Solution: def updateMatrix(self, matrix: List[List[int]]) -> List[List[int]]: m, n = len(matrix), len(matrix[0]) ...原创 2020-04-15 15:00:22 · 110 阅读 · 0 评论 -
leetcode20200414每日一题-445.两数相加Ⅱ
1.题目2.题目意思如例题所示,7243+564=7807,就是直接相加。一般的做法是将链表翻转之后,逐位相加,最后将新链表再翻转回来。这道题不让对链表进行翻转,可参考的其他方法还有栈,将链表的val分别逐个压栈,然后弹出计算。最后计算结果逐个压栈最后取出来构成链表或者计算结果直接构成链表最后翻转都是可以的。python可以通过列表来模拟栈,用列表的pop函数弹出。但是完全没必要,可以用...原创 2020-04-14 09:38:57 · 277 阅读 · 0 评论 -
leetcode20200411每日一题-887.鸡蛋掉落
1.题目2.题目意思扔鸡蛋,看看鸡蛋在第几层不碎。这里需要注意的是,鸡蛋碎了就不能用了,但是鸡蛋没碎的话还是可以继续用的~一开始很容易想到二分法,但是鸡蛋碎完了就做不出来了,毕竟鸡蛋是有限的,最后还是参考了别的大神的dp。3.代码class Solution: def superEggDrop(self, K: int, N: int) -> int: dp...原创 2020-04-11 11:35:30 · 126 阅读 · 0 评论 -
leetcode20200410每日一题-151.反转字符串里的单词
1.题目2.题目意思将字符串里的单词整体翻转,首尾空格不保留,中间空格只能留1。3.代码解法一:class Solution: def reverseWords(self, s: str) -> str: s = list(s) n = len(s) def reverse(s, i, j): wh...原创 2020-04-10 13:17:36 · 246 阅读 · 0 评论 -
leetcode20200409每日一题-22. 括号生成
1.题目2.题目说明给定一个数字n,n表示生成括号数量,比如题中n=3,表示生成3对括号。括号可以相交或者互不相交或者部分相交。输出所有的情况并以列表的形式返回。注:输出情况必须是有序的,不然报错~像我用python的话,不放心可以在得到结果后面加个sort3.各路解法解法一class Solution: def generateParenthesis(self, n: in...原创 2020-04-09 13:08:47 · 479 阅读 · 0 评论