自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(85)
  • 收藏
  • 关注

原创 Python3下ACM模式的输入输出牛客例子

1、多组输入,但是没说多少组。while True: try: a,b=map(int,input().strip().split()) print(a+b) except EOFError: break2、第一行为一个整数,告诉你有几组数据,剩下的行是每组的数据tcase=int(input().strip())for case in range(tcase): a,b=map(int,input().strip()

2021-08-27 13:00:08 2128

原创 leetcode3

'''while这段代码结果是不断从左缩小窗口,直到窗口中不存在与下一个字符重复的字符。一直到while结束,这时的curlen就代表从0到i,包含s[i]元素的最长子串长度。当遍历完成后,我们就知道虽有带着i的最长子串长度,从中选取max即可。'''class Solution: def lengthOfLongestSubstring(self, s: str) -> int: n=len(s) if n<=1: ...

2021-07-19 18:24:07 78

原创 leetcode989,2,66,67,415(两组加和)

这一类题基本上是一个模板:carry是进制,lens是因为最右边是个位数,我们要记录一下。res用来储存最终结果。(别忘了倒序输出)两个数组有一个没有遍历完,都应继续进行(另一个已经便利完成的,默认后续位数上的值为0)x,y分别统计两个数组对应位上的值是多少求和,加入res,计算进制。循环确定最高位数加和后有没有进制产生。输出class Solution: def addToArrayForm(self, num: List[int], k: int) -&..

2021-07-19 17:28:17 110

原创 42接雨水

单调栈法:单调栈解法是按照行来计算的。对应在图中的中间倒坦克部分,就是先算坦克尖的面积,再算坦克身的面积。比较难理解,会就会吧,不会就看动归。首先维持单调栈一贯的风格,stack储存下标,sum用来计数。然后遍历,单调栈的元素顺序从栈头到栈尾是从小到大,如果一旦发现待添加的柱子高度大于栈头元素,说明出现凹槽,从栈头开始数,第二个元素代表的就是凹槽左边的柱子,待添加的元素就是右边的柱子。当遇到相同高度的柱子的时候,我们要更新stack让旧元素弹出,放入新的元素,因为我们是从左向右遍历,所以在计算宽度

2021-07-16 21:20:01 90

原创 leetcode647,5(连续),516(不连续)

class Solution: def countSubstrings(self, s: str) -> int: dp=[[False for _ in range(len(s))] for _ in range(len(s))] res=0 for i in range(len(s)-1,-1,-1):#dp[i][j]由i+1,j-1推出来,所以从左下往右上推。决定了遍历顺序。 for j in range(i,l.

2021-06-29 16:13:45 56

原创 leetcode72(392,115,583)

72class Solution: def minDistance(self, word1: str, word2: str) -> int: len1=len(word1) len2=len(word2) dp=[[0 for i in range(len2+1)] for _ in range(len1+1)] for j in range(len2+1): dp[0][j]=j

2021-06-29 13:23:45 72

原创 leetcode53(res)

class Solution: def maxSubArray(self, nums: List[int]) -> int: if len(nums) == 0: return 0 dp = [0] * len(nums) dp[0] = nums[0] result = dp[0] for i in range(1, len(nums)): dp[i] = max.

2021-06-29 10:27:45 51

原创 leetcode300(不连续)[1143,1035,583,392(不需res),115]//674(连续)718(注意dp设置)

class Solution: def lengthOfLIS(self, nums: List[int]) -> int: dp=[1]*(len(nums)) if len(nums)<=1: return len(nums) res=0 for j in range(1,len(nums)):#因为i要比j小,所以j应该从1开始。 for i in range(j):.

2021-06-28 20:29:25 78

原创 股票汇总:(卖一次)121//(卖无限次)122,714[有手续费],309[冷冻期,注意return!]//(卖固定次)123,188

class Solution: def maxProfit(self, prices: List[int]) -> int: dp=[[0 for _ in range(2)]for _ in range(len(prices))] dp[0][0]=-prices[0] dp[0][1]=0 for i in range(1,len(prices)): dp[i][0]=max(dp[i-1][0],-.

2021-06-27 16:42:00 84

原创 leetcode198,213(环形)337(树形动归)***

class Solution: def rob(self, nums: List[int]) -> int: if not nums: return 0 if len(nums)==1: return nums[0] dp=[0]*(len(nums)) dp[0]=nums[0] dp[1]=max(nums[0],nums[1]) for i i.

2021-06-27 13:21:28 52

原创 leetcode518(组合数)//377,剑指变态跳台阶(排列数)//322,279(最小价值类),139(判断)**

class Solution: def change(self, amount: int, coins: List[int]) -> int: dp=[0]*(amount+1) dp[0]=1 for i in range(len(coins)):#先遍历物品,再遍历背包。是求组合数。反之求排列数。 for j in range(coins[i],amount+1): dp[j]+=dp.

2021-06-26 16:06:33 97

原创 leetcode416,1049(求最大价值)474(二维01)///494(求组合类)

class Solution: def canPartition(self, nums: List[int]) -> bool: if sum(nums)%2==1: return False bag=sum(nums)//2#背包的体积 dp=[0]*(bag+1)#能凑成i的最大的子集和。 for i in range(len(nums)): for j in range...

2021-06-26 13:13:09 169

原创 leetcode96

class Solution: def numTrees(self, n: int) -> int: dp=[0]*(n+1) dp[0]=1 for i in range(1,n+1): for j in range(1,i+1): dp[i]+=dp[i-j]*dp[j-1] return dp[-1]'''dp[3],就是 元素1为头结点搜索树的数量+元素2为头结点.

2021-06-25 15:34:12 48

原创 leetcode343

class Solution: def integerBreak(self, n: int) -> int: dp=[0]*(n+1) dp[2]=1 for i in range(3,n+1): for j in range(1,i): dp[i]=max(dp[i],max((j*(i-j),dp[i-j]*j))) return dp[n] '''简单理解为,.

2021-06-25 15:17:45 68

原创 leetcode62,63

class Solution: def uniquePaths(self, m: int, n: int) -> int: dp=[[0 for _ in range(n)]for _ in range(m)]#初始化储存路径数的dp表格。n表示列数,m表示行数。 for i in range(m):#dp表中,最左边都是只有一种路径选择。所以都填1 dp[i][0]=1 for i in range(n):#最上方也是.

2021-06-25 11:59:03 65

原创 leetcode509,70(斐波那契数列)746

class Solution: def fib(self, n: int) -> int: if n < 2: return n a, b, c = 0, 1, 0 for i in range(1, n): c = a + b a, b = b, c return cclass Solution: def climbStairs(sel.

2021-06-25 11:03:50 85

原创 leetcode968**

# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclass Solution: def minCameraCover(self, root: TreeNode) -&.

2021-06-24 21:14:15 88 2

原创 leetcode738

class Solution: def monotoneIncreasingDigits(self, n: int) -> int: num=list(str(n))#str形式无法修改,所以必须用list flag=len(num)#用来记录哪些位置需要改成9 for i in range(len(num)-1,0,-1):#一定从右向左,因为flag是不断更新的,并且不需要到左边第一位,因为左边第一位是不需要更新flag的。 .

2021-06-24 20:25:10 41

原创 leetcode763

class Solution: def partitionLabels(self, s: str) -> List[int]: hash=[0]*26#用来记录26个字母最远出现的index for i in range(len(s)): hash[ord(s[i])-ord('a')]=i#[]内对应的某个字母,i表示该字母在s中出现的最远位置 res=[] left,right=0,0 .

2021-06-24 19:47:02 71

原创 leetcode452,435,56

class Solution: def findMinArrowShots(self, points: List[List[int]]) -> int: if len(points)==0: return 0 points.sort(key=lambda x:x[0])#和根据身高还有分发糖果一个类型,先按照第一个元素排序。 res=1#最少也需要一次才可以全部引爆。 for i in range(1,l.

2021-06-21 19:16:55 83

原创 leetcode860

class Solution: def lemonadeChange(self, bills: List[int]) -> bool: if bills[0]==10 or bills[0]==20: return False cnt5=0 cnt10=0 cnt20=0 for i in range(len(bills)): if bills[i]==5: .

2021-06-21 17:30:34 47

原创 leetcode135(双向贪心)406

class Solution: def candy(self, ratings: List[int]) -> int: n=len(ratings) candyval=[1]*n for i in range(1,n): if ratings[i]>ratings[i-1]: candyval[i]=candyval[i-1]+1 for i in range(n-2.

2021-06-21 16:33:39 95

原创 leetcode134

class Solution: def canCompleteCircuit(self, gas: List[int], cost: List[int]) -> int: if sum(gas)<sum(cost): return -1 index=0 res=0 for i in range(len(gas)): res+=gas[i]-cost[i] .

2021-06-21 16:13:04 51

原创 leetcode1005

class Solution: def largestSumAfterKNegations(self, nums: List[int], k: int) -> int: nums=sorted(nums,key=abs,reverse=True)#一定要按绝对值大小排序。且是降序,方便处理k>负数个数的情况。 for i in range(len(nums)): if k>0 and nums[i]<=0:#当k>0且遇到的.

2021-06-21 15:47:05 56

原创 leetcode55,45

class Solution: def canJump(self, nums: List[int]) -> bool: if len(nums)==1:#只有一个是可以到达的。 return True cover=0 i=0 while i<=cover:#因为cover是动态变化的,for不支持,所以改用while cover=max(i+nums[i],cover) .

2021-06-21 15:44:09 48

原创 leetcode122,714**

class Solution: def maxProfit(self, prices: List[int]) -> int: res=0 for i in range(len(prices)-1): earn=prices[i+1]-prices[i] if earn>0: res+=earn return res '''贪心在,我们只需要把整个时间拆.

2021-06-21 11:36:43 56

原创 leetcode53

class Solution: def maxSubArray(self, nums: List[int]) -> int: if len(nums)==1: return nums[0] count=0 res=-2**32 for i in range(len(nums)): count+=nums[i] # 如果当前统计结果比我们之前记录的最大值res.

2021-06-21 11:22:59 43

原创 leetcode276

class Solution: def wiggleMaxLength(self, nums: List[int]) -> int: if len(nums)<=1: return len(nums) curdif=0 predif=0 res=1 for i in range(len(nums)-1): curdif=nums[i+1]-nums[i] .

2021-06-21 11:05:19 79

原创 leetcode455

class Solution: def findContentChildren(self, g: List[int], s: List[int]) -> int: #排序 g=sorted(g) s=sorted(s) res=0#记录最后的数 if not s : return 0 index=len(s)-1#从后往前遍历 for i in range(.

2021-06-21 10:53:35 39

原创 leetcode51**(N皇后)

class Solution: def solveNQueens(self, n: int) -> List[List[str]]: if not n: return [] chessboard = [['.'] * n for _ in range(n)] res = [] def backtrack(n, row, chessboard): if row == n: .

2021-06-20 16:29:02 59

原创 leetcode332**(路径规划)

class Solution: def solveNQueens(self, n: int) -> List[List[str]]: if not n: return [] chessboard = [['.'] * n for _ in range(n)] res = [] def backtrack(n, row, chessboard): if row == n: .

2021-06-20 15:41:09 158

原创 leetcode46,47

组合就要求每一次都从0开始,但是要判断该元素究竟有没有用过,以此来规定每个元素只能出现一次。class Solution: def permute(self, nums: List[int]) -> List[List[int]]: res=[] path=[] used=[] def backtrack(nums,used): if len(path)==len(nums):

2021-06-19 17:34:09 62

原创 leetcode78(子集问题就是求所有结点)90(去重) 491

class Solution: def subsets(self, nums: List[int]) -> List[List[int]]: res=[] path=[] def backtrack(nums,start): res.append(path[:]) if start>=len(nums):#不写也行,因为要遍历整个树。 return .

2021-06-19 17:09:41 69

原创 leetcode131,93

class Solution: def partition(self, s: str) -> List[List[str]]: path=[] res=[] def backtrack(s,start):#需要用start标记从哪里开始切割。 if start>=len(s):#当已经切割到s的最后一位时,递归终止 res.append(path[:])#别忘了[:] .

2021-06-19 14:02:18 51

原创 leetcode77,216,17(组合不可重复)39(可重复)40(同层不可重复,树枝可重复)

class Solution: def combine(self, n: int, k: int) -> List[List[int]]: res=[] path=[] def backtrack(n,k,start): if len(path)==k: res.append(path[:]) return#返回到刚刚backtrack这一步,然后回溯。 .

2021-06-19 10:36:28 76

原创 leetcode669

# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclass Solution: def trimBST(self, root: TreeNode, low: int,.

2021-06-18 15:32:53 36

原创 leetcode450

# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclass Solution: def deleteNode(self, root: TreeNode, key: i.

2021-06-18 14:49:54 64

原创 leetcode701

递归class Solution: def insertIntoBST(self, root: TreeNode, val: int) -> TreeNode: node = TreeNode(val) if root==None: return node if root.val>val: root.left=self.insertIntoBST(root.left,val)

2021-06-18 14:44:21 30

原创 leetcode236,235

# 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: 'Tree.

2021-06-18 13:51:47 39

原创 leetcode501

class Solution: def findMode(self, root: TreeNode) -> List[int]: if not root: return [] self.pre=root#加self,全局变量。 self.count=0 self.countmax=0 self.res=[] def findnum(root): i..

2021-06-18 12:58:19 30

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除