当前位置: 首页 > news >正文

python leetcode简单练习(2)

20 有效括号


方法思路

要判断一个仅由括号组成的字符串是否有效,可以使用栈这一数据结构。核心思路是遍历字符串中的每个字符,遇到左括号时压入栈中,遇到右括号时检查栈顶的左括号是否匹配。若匹配则弹出栈顶元素,否则返回false。最终,若栈为空则说明所有括号正确闭合。

class Solution:
    def isValid(self,s):
        class Solution:
            def isValid(self,s):
                dic = {')':'(',']':'[','}':'{'}
                stack = []
                for i in s:
                    if i in dic:
                        if not stack or dic[i] != stack[-1]:
                            return False
                        stack.pop()
                    else:
                        stack.append(i)
                return not stack

 21. 合并两个有序链表

方法思路

合并两个有序链表可以通过逐个比较节点值并逐步构建新链表来实现。使用虚拟头节点简化初始条件处理,然后用指针依次连接较小值的节点,直到其中一个链表遍历完毕,最后将剩余链表直接接上。

class ListNode:
    def __init__(self,val=0,next=None):
        self.val = val
        self.next = next
class Solution:
    def mergeTwoLists(self,list1,list2):
        LNode = ListNode()
        p = LNode #虚拟指针
        while list1 and list2:
            if list1.val <= list2.val:
                p.next = list1
                list1 = list1.next
            else:
                p.next = list2
                list2 = list2.next
            p = p.next
        p.next = list1 if list1 else list2
        return LNode.next

26. 删除有序数组中的重复项

但实际上题目只要求前k个元素正确,后面的元素无关紧要。

方法思路

使用双指针法,快指针遍历数组,慢指针记录当前有效位置。由于数组已排序,重复元素必然相邻,遇到不同元素时将其移至慢指针位置,最后返回慢指针位置+1即为新数组长度。

#k是慢指针,用来记录我们想要的数组真正的下标,i是快指针用来遍历数组
class Solution:
    def removeDuplicates(self,nums):
        if not nums:
            return 0
        k = 0
        for i in range(1,len(nums)):
            if nums[i] != nums[k]:
                k += 1
                nums[k] = nums[i]
        return k+1

27.移除元素

但实际上题目只要求前k个元素正确,后面的元素无关紧要。

使用双指针法,快指针遍历数组,慢指针记录有效位置。将非目标值的元素移至数组前部,最后返回有效长度。

class Solution:
    def removeElement(self,nums,val):
        if not nums:
            return 0
        k = 0
        for i in range(0,len(nums)):
            if nums[i] != val:
                nums[k] = nums[i]
                k += 1
        return k

相关文章:

  • 如何免费阅读Medium文章?
  • mysql JSON_ARRAYAGG联合JSON_OBJECT使用
  • 第二章:NumPy进阶与数据处理
  • 机器学习基础概括
  • windows通用网线连接ubuntu实现ssh登录、桌面控制、文件共享【实操常见问题解决思路】
  • 本地Ollama+Spring AI alibaba智能客服(飞机票预定示例Demo)Mac版
  • Redis7——进阶篇(七)
  • datetime模块
  • ECharts 中轴的分类及常见使用场景
  • 【FreeRtos】随手记录想法和DeepSeek的交流
  • anaconda学习
  • vue 路由
  • 把doi直接插入word中,然后直接生成参考文献
  • 论文阅读:Dual Anchor Graph Fuzzy Clustering for Multiview Data
  • compareTo方法示例
  • git分支和标签
  • ①EtherCAT/Ethernet/IP/Profinet/ModbusTCP协议互转工业串口网关
  • K8s存储全解析:从临时存储到持久化解决方案的完整指南
  • 探索量子世界的先驱:马克斯・普朗克与普朗克参数
  • 【区块链安全 | 第十七篇】类型之引用类型(一)
  • 浦项建设中国有限公司网站/被忽悠去做网销了
  • 冠县企业做网站推广/建立一个网站需要花多少钱
  • wordpress成品网站yunbuluo/武汉网络推广公司排名
  • 网站建设适用税种/电商营销推广方法
  • 拼多多免费推广软件/seo免费优化软件
  • 同一个wifi下_我如何用手机访问我用我电脑做服务器的网站/企业网站设计图片