力扣71~75题

题71(中等):

python代码:

复制代码
class Solution:
    def simplifyPath(self, path: str) -> str:
        #首先根据/分割字符串,再使用栈来遍历存储
        p_list=path.split('/')
        p_stack=[]
        for i in p_list:
            #如果为空则肯定是//或者///
            if i=='':
                continue      
            #如果为..则s_stack要退一个
            if i=='..':
                if p_stack!=[]:
                    p_stack.pop()
                continue
            #如果为.则取当前目录(即为无事发生)
            if i=='.':
                continue
            p_stack.append(i)
        return '/'+'/'.join(p_stack)

题72(中等):

python代码:

复制代码
class Solution:
    def minDistance(self, word1: str, word2: str) -> int:
        #我感觉要使用动态规划
        m=len(word1)
        n=len(word2)
        dp=[[0]*(n+1) for _ in range(m+1)]

        for i in range(m+1):
            for j in range(n+1):
                if i==0:
                    dp[i][j]=j
                elif j==0:
                    dp[i][j]=i



        for i in range(1,m+1):
            for j in range(1,n+1):
                if word1[i-1]==word2[j-1]:
                    dp[i][j]=dp[i-1][j-1]
                else:
                    dp[i][j]=min(dp[i-1][j],dp[i-1][j-1],dp[i][j-1])+1
        return dp[-1][-1]

题73(中等):

python代码:

复制代码
class Solution:
    def setZeroes(self, matrix: List[List[int]]) -> None:
        """
        Do not return anything, modify matrix in-place instead.
        """
        #先找0在设置
        row=set()
        col=set()
        m=len(matrix)
        if m==0:
            return
        n=len(matrix[0])
        if n==0:
            return
        for i in range(m):
            for j in range(n):
                if matrix[i][j]==0:
                    col.add(j)
                    row.add(i)
        for i in list(row):
            for j in range(n):
                matrix[i][j]=0
        for i in range(m):
            for j in list(col):
                matrix[i][j]=0

题74(中等):

python代码

复制代码
class Solution:
    def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
        #和每一行最后一个比,如果大于它就肯定在该行或者不存在,小于就往下看
        m=len(matrix)
        if m==0:
            return False
        n=len(matrix[0])
        if n==0:
            return False
        for i in range(m):
            if target<matrix[i][n-1]:
                return target in matrix[i]
            elif target==matrix[i][n-1]:
                return True
            else:
                continue
        return False

题75(中等):

分析:

这题我一开始是想双指针,但是中间的1很麻烦就放弃,用了最朴素的统计0,1,2数量方法,但是后面我学到了使用3指针,

复制代码
class Solution:
    def sortColors(self, nums: List[int]) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        #学到一个3指针法
        p0,p1,p2=0,0,len(nums)-1
        while p1<=p2:
            if nums[p1]==0:
                #如果0在中间,就往边上丢,p0与p1之间一定是1,所以换来p1也加1
                nums[p0],nums[p1]=nums[p1],nums[p0]
                p1+=1
                p0+=1
            elif nums[p1]==2:
                nums[p1],nums[p2]=nums[p2],nums[p1]
                p2-=1
            elif nums[p1]==1:
                p1+=1
相关推荐
RTC老炮10 分钟前
webrtc降噪-WienerFilter源码分析与算法原理
算法·webrtc
hweiyu0040 分钟前
数据结构:数组
数据结构·算法
无限进步_1 小时前
C语言单向链表实现详解:从基础操作到完整测试
c语言·开发语言·数据结构·c++·算法·链表·visual studio
初夏睡觉1 小时前
循环比赛日程表 题解
数据结构·c++·算法
派大星爱吃鱼1 小时前
素数检验方法
算法
Greedy Alg2 小时前
LeetCode 72. 编辑距离(中等)
算法
xinxingrs2 小时前
贪心算法、动态规划以及相关应用(python)
笔记·python·学习·算法·贪心算法·动态规划
秋邱2 小时前
驾驭数据洪流:Python如何赋能您的数据思维与决策飞跃
jvm·算法·云原生·oracle·eureka·数据分析·推荐算法
侯小啾2 小时前
【23】C语言 左移(<<) 与 右移(>>) 位运算符在处理像素中的应用
c语言·算法·位运算·右移·左移
搂鱼1145143 小时前
(dp 优化)洛谷 P14460 寻雾启示 题解
算法·图论