两数相加(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. Kibana之基本使用

    介绍kibana经常使用的功能 查询: # 查询内容不为空的数据,并返回总数量 GET mp_article/_search?rest_total_hits_as_int=true { "q ...

  2. Nuxt.js 应用中的 webpack:progress 事件钩子

    title: Nuxt.js 应用中的 webpack:progress 事件钩子 date: 2024/11/27 updated: 2024/11/27 author: cmdragon exce ...

  3. NOIP2024加赛8

    NOIP2024加赛8 T1 flandre 第 4 个样例没给全,说明这可以直接猜结论 首先我们假设选定了 $ x $ 个数,那么我们肯定是把他们从小到大排好序依次放,这样才能使整体效果最大.然后我 ...

  4. ZCMU-1156

    思路: 要改变的是一个范围的情况,所以正常情况下会超时. 查阅后知道应该用一个叫做树状数组的结构. 查阅和树状数组的后续情况 这个也不错 注意: 我没怎么看懂,可能没太仔细看. 树状数组当中存在的是前 ...

  5. uniapp h5 和 小程序互相传值

    小程序端 <template> <div> <web-view :webview-styles="webviewStyles" :src=" ...

  6. 准备好"干翻世界"之前,不妨先听听我们的意见

    期待大家的到来哦~    

  7. 【数据库】MySQL概念性基础知识期末复习

    选择题 第一章 3 二维表结构--数据模型--关系数据模型 5 描述全部数据整体逻辑结构--模式 6 逻辑数据独立性--模式变,外模式和应用程序不变 7 物理数据独立性--内模式变,外模式和应用程序不 ...

  8. 【转载】Apache Doris、DorisDB傻傻分不清。。。

    https://www.sohu.com/a/488816742_827544   相信这两天很多社区小伙伴都看到 StarRocks 所谓"开源"的动态了,开源用户群里有很多小伙 ...

  9. resttemplate 调用https 出错 unable to find valid certification path to requested target

    resttemplate 调用https使用下面代码: @Bean @Primary public RestTemplate restTemplate(ClientHttpRequestFactory ...

  10. maven maven-surefire-plugin的乱码问题

    今天项目中出现奇怪问题,在eclipse中直接运行TestNG时,全部都OK,但是执行mvn test时却失败.观察其输出日志,发现有乱码,怀疑是乱码导致. 最终在官网发现蛛丝马迹. maven-su ...