两数相加(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题的更多相关文章

  1. Leetcode春季打卡活动 第二题:206. 反转链表

    Leetcode春季打卡活动 第二题:206. 反转链表 206. 反转链表 Talk is cheap . Show me the code . /** * Definition for singl ...

  2. Leetcode 春季打卡活动 第一题:225. 用队列实现栈

    Leetcode 春季打卡活动 第一题:225. 用队列实现栈 Leetcode 春季打卡活动 第一题:225. 用队列实现栈 解题思路 这里用了非常简单的思路,就是在push函数上做点操作,让队头总 ...

  3. Leetcode 简略题解 - 共567题

    Leetcode 简略题解 - 共567题     写在开头:我作为一个老实人,一向非常反感骗赞.收智商税两种行为.前几天看到不止两三位用户说自己辛苦写了干货,结果收藏数是点赞数的三倍有余,感觉自己的 ...

  4. leetcode打卡

    leetcode刷题打卡 刷题链接 夸夸群 刷题记录链接 期中颜色不一样的,是刷题中遇到问题的,以后需要强化 [x] 6.1 打卡 [x] 6.2 打卡 中间因个人原因没做题,后面慢慢补上 [x] 6 ...

  5. [LeetCode] Merge Interval系列,题:Insert Interval,Merge Intervals

    Interval的合并时比较常见的一类题目,网上的Amazon面经上也有面试这道题的记录.这里以LeetCode上的例题做练习. Merge Intervals Given a collection ...

  6. URAL1306 Sequence Median(卡内存神题)

    给出n个数,n<=250000,求这n个数的中位数,内存限制1mb 卡内存的神题,用数组存下来刚好1mb,再加上执行时消耗内存.立即爆. 因此我们用优先队列存储一半的数. 网上的某些代码,用pr ...

  7. 【LeetCode】2020-03 每日一题

    121. 买卖股票的最佳时机(简单) [分类]:模拟.思维 [题解]:可以用O(n)的复杂度完成,只需要在遍历的时候记录到当前位置为止买入股票的最小价格minn,再维护一个当前卖出股票价(a-minn ...

  8. LeetCode剑指Offer刷题总结(一)

    LeetCode过程中值得反思的细节 以下题号均指LeetCode剑指offer题库中的题号 本文章将每周定期更新,当内容达到10题左右时将会开下一节. 二维数组越界问题04 public stati ...

  9. bzoj5210最大连通子块和 (动态dp+卡常好题)

    卡了一晚上,经历了被卡空间,被卡T,被卡数组等一堆惨惨的事情之后,终于在各位大爹的帮助下过了这个题qwqqq (全网都没有用矩阵转移的动态dp,让我很慌张) 首先,我们先考虑一个比较基础的\(dp\) ...

  10. 【LeetCode】代码模板,刷题必会

    目录 二分查找 排序的写法 BFS的写法 DFS的写法 回溯法 树 递归 迭代 前序遍历 中序遍历 后序遍历 构建完全二叉树 并查集 前缀树 图遍历 Dijkstra算法 Floyd-Warshall ...

随机推荐

  1. PostgreSql Docker 主从热备,异步流复制方案

    环境说明 Docker Windows 11 PostgreSql 16 方案步骤 0. 宿主机准备: 找个地方创建一个文件夹用来挂载容器中数据库Data文件夹,这里我用的是: C:\Users\Ad ...

  2. 使用conditional 实现线程精准通讯

    实现3个线程之间依次执行 比如有3个线程A,B,C ,需要按照顺序执行,ABC,ABC 依次执行. 这个使用可以使用 Lock 的 conditional来实现线程之间精准通讯. 点击查看代码 pac ...

  3. 生成式AI如何辅助医药行业智能营销

    生成式AI如何辅助医药行业智能营销 生成式AI在医药行业的智能营销中发挥着日益重要的作用,它通过多种方式辅助医药企业提升市场洞察能力.优化营销策略.增强客户互动和体验,从而推动销售增长和品牌价值的提升 ...

  4. 斐波那契数列(Java实现)

    斐波那契数列 题目描述: 悲波那契数列(Fibonacci sequence)又称黄金分割数列,因数学家莱昂纳多·裴波那契(LeonardodaFibonacci)以兔子繁殖为例子而引入,故又称为&q ...

  5. Spark内存调优

    一.概述Spark 作为一个基于内存的分布式计算引擎,其内存管理模块在整个系统中扮演着非常重要的角色.理解 Spark 内存管理的基本原理,有助于更好地开发 Spark 应用程序和进行性能调优.本文旨 ...

  6. Compile error: Cannot find a C++ compiler that supports both C++11 and the specified C++ flags

    reno@MyComputer:~/tools/cmake-3.12.4$ ./configure --------------------------------------------- CMak ...

  7. Qt/C++编写视频监控系统81-Onvif报警抓图和录像并回放

    一.前言 视频监控系统中的图文警情模块,是通过Onvif协议的事件订阅拿到的,通过事件订阅后,设备的各种报警事件比如入侵报警/遮挡报警/越界报警/开关量报警等,触发后都会主动往订阅者发送,而且一般都是 ...

  8. Qt开发经验小技巧251-255

    今天在一个头文件中,发现 #ifdef Q_OS_WIN #ifdef Q_CC_MSVC 之类的都失效了,搞得差点怀疑人生了.经历过之前类似的教训后,排查原来是没有提前引入 qglobal.h 头文 ...

  9. Spring+Vue+ElementUI的前后端分离开发项目中,前端向后端发送请求,后端返回错误:Cannot deserialize instance of `java.util.LinkedHashMap` out of START_ARRAY token

    问题描述: Spring+Vue+ElementUI的前后端分离开发项目中,前端向后端发送请求,后端返回错误:Cannot deserialize instance of `java.util.Lin ...

  10. 架构-初识BFF

    引言 晚上公司开了一个技术分享会,主要内容就是公司的项目架构,会中讲解了项目整体架构是BFF架构,就是在微服务之上多加了一层. 除此之外,还讲解了DDD设计思想,主要用于各个业务中台,如订单中台.用户 ...