datawhale-leetcode打卡:038~050题
两数相加(leetcode 002)
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
if not l1:
return l2
if not l2:
return l1
l1.val += l2.val # 将两数相加,赋值给 l1 节点
if l1.val >= 10:
l1.next = self.addTwoNumbers(ListNode(l1.val // 10), l1.next)
l1.val %= 10
l1.next = self.addTwoNumbers(l1.next, l2.next)
return l1
最小栈(leetcode 155)
主要就是熟悉一下面向对象的用法。
class MinStack:
def __init__(self):
self.stack=[]
def push(self, val: int) -> None:
self.stack.append(val)
def pop(self) -> None:
self.stack.pop()
def top(self) -> int:
return self.stack[-1]
def getMin(self) -> int:
return min(self.stack)
# Your MinStack object will be instantiated and called as such:
# obj = MinStack()
# obj.push(val)
# obj.pop()
# param_3 = obj.top()
# param_4 = obj.getMin()
有效的括号(leetcode 020)
这是以前面试的时候做过的一个题目,我这里重新写一下。
class Solution:
def isValid(self, s: str) -> bool:
stack=[]
for i in s:
stack.append(i)
if len(stack)>1:
if stack[-2]+stack[-1]=='()' or stack[-2]+stack[-1]=='[]' or stack[-2]+stack[-1]=='{}':
stack.pop()
stack.pop()
return len(stack)==0
基本计算器II(leetcode 227)
class Solution:
def calculate(self, s: str) -> int:
return int(eval(s))
用栈实现队列(leetcode 232)
class MyQueue:
def __init__(self):
self.queue=[]
def push(self, x: int) -> None:
self.queue.append(x)
def pop(self) -> int:
a=self.queue[0]
self.queue=self.queue[1:]
return a
def peek(self) -> int:
return self.queue[0]
def empty(self) -> bool:
return self.queue==[]
# Your MyQueue object will be instantiated and called as such:
# obj = MyQueue()
# obj.push(x)
# param_2 = obj.pop()
# param_3 = obj.peek()
# param_4 = obj.empty()
最长有效括号(leetcode 032)
这个题估计还是考动态规划,算了我这里简写一下
class Solution:
def longestValidParentheses(self, s: str) -> int:
a=[-1]
ans=0
for i in range(len(s)):
if s[i]=='(':
a.append(i)
else:
a.pop()
if not a:
a.append(i)
else:
ans=max(ans,i-a[-1])
return ans
接雨水(leetcode 042)
class Solution:
def trap(self, height: List[int]) -> int:
maxl = maxr = 0
n = len(height)
list = [0] * n
for i in range(n):
maxl = max(maxl, height[i])
list[i] = maxl
for i in range(n-1,-1,-1):
maxr = max(maxr,height[i])
list[i] = min(list[i],maxr)
height[i]=list[i]-height[i]
return sum(height)
用队列实现栈(leetcode 225)
class MyStack:
def __init__(self):
self.stack=[]
def push(self, x: int) -> None:
self.stack.append(x)
def pop(self) -> int:
a=self.stack.pop()
return a
def top(self) -> int:
return self.stack[-1]
def empty(self) -> bool:
return len(self.stack)==0
# Your MyStack object will be instantiated and called as such:
# obj = MyStack()
# obj.push(x)
# param_2 = obj.pop()
# param_3 = obj.top()
# param_4 = obj.empty()
两数之和(leetcode 001)
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
n=len(nums)
for i in range(n):
for j in range(i+1,n):
if nums[i]+nums[j]==target:
return [i,j]
三数之和(leetcode 015)
class Solution:
def threeSum(self, nums: List[int]) -> List[List[int]]:
n=len(nums)
res=[]
if(not nums or n<3):
return []
nums.sort()
res=[]
for i in range(n):
if(nums[i]>0):
return res
if(i>0 and nums[i]==nums[i-1]):
continue
L=i+1
R=n-1
while(L<R):
if(nums[i]+nums[L]+nums[R]==0):
res.append([nums[i],nums[L],nums[R]])
while(L<R and nums[L]==nums[L+1]):
L=L+1
while(L<R and nums[R]==nums[R-1]):
R=R-1
L=L+1
R=R-1
elif(nums[i]+nums[L]+nums[R]>0):
R=R-1
else:
L=L+1
return res
缺失的第一个正数(leetcode 042)
遍历就行
class Solution:
def firstMissingPositive(self, nums: List[int]) -> int:
for i in range(1,max(nums)):
if i not in nums:
return i
return max(nums)+1
最长连续序列(leetcode 128)
class Solution:
def longestConsecutive(self, nums: List[int]) -> int:
if not nums: # 如果是空列表,直接返回0
return 0
s=set(nums)
chuliguo=set() #创建一个集合来记录**处理过**的数字,如果未处理过,就加入其中
res=0
for x in nums:
do=0 # 记录每次遍历时的结果
if x in chuliguo:
continue # 如果处理过了,就直接跳过该数字
chuliguo.add(x) #未处理过的,加入处理过的这个集合
temp=x # 用一个临时变量来记录此时x的值
while x-1 in s: # 如果x-1也在s里面,那么就把他也处理了
chuliguo.add(x-1) # 把他加入处理过的集合,因为如果不加入,再次执行到它时,执行的是重复的操作
do+=1 # 这次执行的结果也要加一
x-=1 # 再去看x-1...直到x-1不再在s中
x=temp # 因为经过上述操作,我们x值已经发生了改变,此时我们要赋回原值
while x+1 in s: # 再去看x+1
chuliguo.add(x+1)
do+=1
x+=1
res=max(do,res) #在每一次遍历中,将res重新赋值
return res+1 #返回res+1,+1是因为我们在最初处理x的时候没有把他原来的数的次数加到里面
datawhale-leetcode打卡:038~050题的更多相关文章
- Leetcode春季打卡活动 第二题:206. 反转链表
Leetcode春季打卡活动 第二题:206. 反转链表 206. 反转链表 Talk is cheap . Show me the code . /** * Definition for singl ...
- Leetcode 春季打卡活动 第一题:225. 用队列实现栈
Leetcode 春季打卡活动 第一题:225. 用队列实现栈 Leetcode 春季打卡活动 第一题:225. 用队列实现栈 解题思路 这里用了非常简单的思路,就是在push函数上做点操作,让队头总 ...
- Leetcode 简略题解 - 共567题
Leetcode 简略题解 - 共567题 写在开头:我作为一个老实人,一向非常反感骗赞.收智商税两种行为.前几天看到不止两三位用户说自己辛苦写了干货,结果收藏数是点赞数的三倍有余,感觉自己的 ...
- leetcode打卡
leetcode刷题打卡 刷题链接 夸夸群 刷题记录链接 期中颜色不一样的,是刷题中遇到问题的,以后需要强化 [x] 6.1 打卡 [x] 6.2 打卡 中间因个人原因没做题,后面慢慢补上 [x] 6 ...
- [LeetCode] Merge Interval系列,题:Insert Interval,Merge Intervals
Interval的合并时比较常见的一类题目,网上的Amazon面经上也有面试这道题的记录.这里以LeetCode上的例题做练习. Merge Intervals Given a collection ...
- URAL1306 Sequence Median(卡内存神题)
给出n个数,n<=250000,求这n个数的中位数,内存限制1mb 卡内存的神题,用数组存下来刚好1mb,再加上执行时消耗内存.立即爆. 因此我们用优先队列存储一半的数. 网上的某些代码,用pr ...
- 【LeetCode】2020-03 每日一题
121. 买卖股票的最佳时机(简单) [分类]:模拟.思维 [题解]:可以用O(n)的复杂度完成,只需要在遍历的时候记录到当前位置为止买入股票的最小价格minn,再维护一个当前卖出股票价(a-minn ...
- LeetCode剑指Offer刷题总结(一)
LeetCode过程中值得反思的细节 以下题号均指LeetCode剑指offer题库中的题号 本文章将每周定期更新,当内容达到10题左右时将会开下一节. 二维数组越界问题04 public stati ...
- bzoj5210最大连通子块和 (动态dp+卡常好题)
卡了一晚上,经历了被卡空间,被卡T,被卡数组等一堆惨惨的事情之后,终于在各位大爹的帮助下过了这个题qwqqq (全网都没有用矩阵转移的动态dp,让我很慌张) 首先,我们先考虑一个比较基础的\(dp\) ...
- 【LeetCode】代码模板,刷题必会
目录 二分查找 排序的写法 BFS的写法 DFS的写法 回溯法 树 递归 迭代 前序遍历 中序遍历 后序遍历 构建完全二叉树 并查集 前缀树 图遍历 Dijkstra算法 Floyd-Warshall ...
随机推荐
- docker安装Nginx并运行vue3前端
Docker安装Nginx #获取Nginx docker pull nginx #查端口 netstat -ntlp #建本地目录 mkdir -p /home/nginx/www /home/ng ...
- 使用 .NET 的 Dev Proxy 构建和测试弹性应用
使用 .NET 的 Dev Proxy 构建和测试弹性应用 https://devblogs.microsoft.com/dotnet/build-test-resilient-apps-dotnet ...
- 探索使用 ViewContainerRef 的 Angular DOM 操控技术
探索使用 ViewContainerRef 的 Angular DOM 操控技术 https://indepth.dev/posts/1052/exploring-angular-dom-manipu ...
- 【前端】【H5 API】Web存储 Web Storage
Web存储 传统的方式是使用document.cookie来进行存储,但是由于其存储空间有限(大约4KB),并且需要复杂的操作来解析,给开发者带来了诸多不便. 为此,HTML 5规范提出了网络存储的相 ...
- Springboot使用mongodb遇到问题及解决
网上看到使用mongodb好像很简单,没有什么问题,可我一用就怎么都连不上,先看看我的配置 在pom.xml中添加依赖 1234 <dependency> <groupId&g ...
- Spark面试题汇总及答案(推荐收藏)
一.面试题 Spark 通常来说,Spark与MapReduce相比,Spark运行效率更高.请说明效率更高来源于Spark内置的哪些机制? hadoop和spark使用场景? spark如何保证宕机 ...
- Qt/C++编写视频监控系统82-自定义音柱显示
一.前言 通过音柱控件实时展示当前播放的声音产生的振幅的大小,得益于音频播放组件内置了音频振幅的计算,可以动态开启和关闭,开启后会对发送过来的要播放的声音数据,进行运算得到当前这个音频数据的振幅,类似 ...
- Qt音视频开发37-识别鼠标按下像素坐标
一.前言 在和视频交互过程中,用户一般需要在显示视频的通道上点击对应的区域,弹出对应的操作按钮,将当前点击的区域或者绘制的多边形区域坐标或者坐标点集合,发送出去,通知其他设备进行处理.比如识别到很多人 ...
- OpenGL ES 3.x游戏开发(上+下卷)书籍的电子版+源程序
直接附上电子书以及源代码下载链接:https://pan.baidu.com/s/1G10hw5aIi-Bc2LyktwKrdg
- 微信小游戏直播在Android端的跨进程渲染推流实践
本文由微信开发团队工程师"virwu"分享. 1.引言 近期,微信小游戏支持了视频号一键开播,将微信升级到最新版本,打开腾讯系小游戏(如跳一跳.欢乐斗地主等),在右上角菜单就可以看 ...