力扣刷题(21-30)
21.合并两个有序链表①题目②考点双指针 dummy 虚拟头节点③答案# Definition for singly-linked list. # class ListNode(object): # def __init__(self, val0, nextNone): # self.val val # self.next next class Solution(object): def mergeTwoLists(self, list1, list2): :type list1: Optional[ListNode] :type list2: Optional[ListNode] :rtype: Optional[ListNode] dummy ListNode(0) # cur 始终指向合并后链表的最后一个节点 cur dummy # 当两个链表都还有节点时进行比较 while list1 and list2: # list1 当前节点较小 if list1.val list2.val: cur.next list1 # list1 向后移动 list1 list1.next # list2 当前节点较小 else: cur.next list2 # list2 向后移动 list2 list2.next # cur 向后移动到刚刚添加的节点 cur cur.next # 循环结束后至少有一个链表为空 # 将另一个链表剩余部分直接接到结果后面 if list1: cur.next list1 else: cur.next list2 # dummy 是虚拟头节点真正的头节点是 dummy.next return dummy.next22.括号生成①题目②考点所谓“有效”需要满足左括号和右括号各有n个。任意位置之前出现的右括号数量不能超过左括号数量。最终所有左括号都能被右括号匹配。这道题主要考察回溯算法递归状态记录剪枝append()和pop()的配合如何保证生成结果合法③答案class Solution(object): def generateParenthesis(self, n): :type n: int :rtype: List[str] res [] # 保存所有合法的括号组合 path [] # 保存当前正在生成的括号组合 def backtrack(left, right): left已经使用的左括号数量 right已经使用的右括号数量 # 左右括号都使用了 n 个得到一个完整答案 if left n and right n: res.append(.join(path)) #将列表拼接成字符串 return # 左括号还没有用完可以添加左括号 if left n: path.append(() backtrack(left 1, right) # 撤销刚才添加的左括号 path.pop() # 右括号数量小于左括号数量时才能添加右括号 if right left: path.append()) backtrack(left, right 1) # 撤销刚才添加的右括号 path.pop() # 初始时左右括号都没有使用 backtrack(0, 0) return res23困难合并K个升序链表24.两两交换链表中的节点①题目②考点链表指针操作 虚拟头节点dummy③答案# Definition for singly-linked list. # class ListNode(object): # def __init__(self, val0, nextNone): # self.val val # self.next next class Solution(object): def swapPairs(self, head): :type head: Optional[ListNode] :rtype: Optional[ListNode] # 创建虚拟头节点方便处理原链表的头节点交换 dummy ListNode(0) dummy.next head # pre 指向当前准备交换的两个节点之前的节点 pre dummy # 后面至少存在两个节点时才能进行交换 while pre.next and pre.next.next: # 当前需要交换的第一个节点 first pre.next # 当前需要交换的第二个节点 second first.next # 第一步让 first 跳过 second first.next second.next # 第二步让 second 指向 first second.next first # 第三步让前面的节点 pre 指向交换后的 second pre.next second # first 现在是这一组交换后的最后一个节点 # 下一轮从 first 后面继续交换 pre first # dummy 是额外创建的虚拟节点真正的头节点是 dummy.next return dummy.next25.困难K个一组翻转链表26.删除有序数字中的重复项①题目②考点双指针思想在原数组中完成去重不创建新的结果数组“非严格递增排列”的数组通俗来说就是数组里的元素从左到右整体趋势是越来越大的但允许相邻的数字相等。③答案class Solution(object): def removeDuplicates(self, nums): :type nums: List[int] :rtype: int n len(nums) if n 2: return n k 1 last nums[0] for i in range(1, n): current nums[i] if current ! last: nums[k] current k 1 last current return k27.移除元素①题目②考点快慢指针使用两个变量i负责遍历整个数组可以理解为快指针k表示下一个“不等于val的元素”应该放置的位置可以理解为慢指针。③答案class Solution(object): def removeElement(self, nums, val): :type nums: List[int] :type val: int :rtype: int k 0 for i in range(len(nums)): if nums[i] ! val: nums[k] nums[i] k 1 return k空列表不能直接使用下标赋值28.找出字符串中第一个匹配项的下标①题目②考点逐个位置比较③答案class Solution(object): def strStr(self, haystack, needle): :type haystack: str :type needle: str :rtype: int m len(haystack) n len(needle) for i in range(m-n1): if needle haystack[i:in]: #中括号中必须填写下标或切片范围,这里不需要对 needle 进行切片直接比较整个 needle 即可 return i return -129.两数相除①题目②考点位运算 减法^ 是异或运算。只有两个条件不同时结果才是 True。核心语法range(start, stop, step)Python 的range()函数有三个参数start起始值31。循环变量shift的初始值是 31。stop结束值-1。注意stop是不包含在内的开区间。所以循环会在shift等于 0 时执行当shift变成 -1 时停止。step步长-1。表示每次循环后shift的值减 1。③答案class Solution(object): def divide(self, dividend, divisor): :type dividend: int :type divisor: int :rtype: int # 32 位有符号整数范围 MAX_INT (1 31) - 1 MIN_INT -(1 31) # 唯一可能发生正溢出的情况 # -2147483648 / -1 2147483648 # 超过了最大值 2147483647 if dividend MIN_INT and divisor -1: return MAX_INT # 判断最终结果是否为负数 negative (dividend 0) ^ (divisor 0) #^ 是异或运算。只有两个条件不同时结果才是 True # 先全部转换为正数进行计算 a abs(dividend) b abs(divisor) quotient 0 #商 # 从第 31 位一直检查到第 0 位 for shift in range(31, -1, -1): # 判断 b 左移 shift 位后是否不超过 a if a (b shift): # 从被除数中减去这一部分 a - b shift # 商中增加对应的值 quotient 1 shift # 如果两个数一正一负结果应该为负数 if negative: quotient -quotient return quotient30.困难串联所有单词的子串

相关新闻

WebGL 2.0火焰特效:轻量化实时渲染技术解析

WebGL 2.0火焰特效:轻量化实时渲染技术解析

1. 项目背景与核心价值"野火_firege"这个项目名称让我联想到两个关键元素:野火的自然现象与firege这个合成词可能代表的"fire edge"(火焰边缘)概念。在数字创意领域,这通常指向动态火焰特效的生成与交互技术。…

2026/7/23 12:16:22 阅读更多 →
SQL为何成为AI时代的底层操作系统语言

SQL为何成为AI时代的底层操作系统语言

1. 项目概述:当AI狂奔时,SQL却在 quietly 回归你最近有没有注意到一个反直觉的现象?在大模型满天飞、Python脚本动辄上千行、向量数据库被反复刷屏的AI技术前线,越来越多的数据科学家在 Slack 里发截图——不是 PyTorch 训练日志&…

2026/7/22 16:41:45 阅读更多 →
从零开始使用 Python 连接 Kinect v2 深度相机:SDK 配置、彩色图读取、深度图读取与实时测距

从零开始使用 Python 连接 Kinect v2 深度相机:SDK 配置、彩色图读取、深度图读取与实时测距

前言 普通摄像头只能获取二维彩色图像,而深度相机除了能够获取 RGB 彩色图像,还可以测量场景中各个像素点到相机的距离。 借助深度相机,我们可以进一步实现例如,人体骨骼识别、障碍物检测、物体尺寸测量、三维点云生成、机器人视觉…

2026/7/21 15:45:01 阅读更多 →

最新新闻

斐讯N1刷OpenWRT打造智能旁路由:内网穿透实现远程SSH管理

斐讯N1刷OpenWRT打造智能旁路由:内网穿透实现远程SSH管理

1. 斐讯N1盒子与OpenWRT系统简介 斐讯N1盒子作为一款性价比极高的硬件设备,在技术爱好者圈子里早已小有名气。这款搭载Amlogic S905D处理器的迷你主机,标配2GB内存和8GB存储空间,支持千兆有线网络和双频WiFi,硬件配置完全能够胜任轻量级路由器的角色。我去年在二手市场以不…

2026/7/23 20:09:26 阅读更多 →
资源监控工具:TrafficMonitor、btop、bashtop、bpytop、btop4win、HUATUO

资源监控工具:TrafficMonitor、btop、bashtop、bpytop、btop4win、HUATUO

本文收集几款资源(CPU、网络流量、内存、磁盘等)监控工具,适用于各大主流操作系统。 TrafficMonitor 使用C开发、开源(GitHub,45.3K Star,3.7K Fork)Windows平台电脑资源监控工具。 特性&…

2026/7/23 20:09:26 阅读更多 →
计算机毕业设计-小程序毕业设计-基于微信小程序健康饮食系统的设计与实现-健康饮食小程序-饮食记录小程序-饮食搭配小程序

计算机毕业设计-小程序毕业设计-基于微信小程序健康饮食系统的设计与实现-健康饮食小程序-饮食记录小程序-饮食搭配小程序

计算机毕业设计-小程序毕业设计-基于微信小程序健康饮食系统的设计与实现-健康饮食小程序-饮食记录小程序-饮食搭配小程序 B站视频介绍 技术说明: 用户前端:微信小程序原生框架 管理前端:Vue.js 服务端(后端):基于Java的Springboot框架 数据库:MySQ 功能介绍&#…

2026/7/23 20:09:26 阅读更多 →
STL分类

STL分类

1、序列容器(元素按线性顺序存储,每个元素都有固定的位置)std::vector:动态数组(三指针模拟),支持快速随机访问。std::list:链表(带头双向循环列表)&#xff…

2026/7/23 20:09:26 阅读更多 →
2026 电子实验记录本排行榜 10 款深度测评,生物医药实验室 ELN 选型参考

2026 电子实验记录本排行榜 10 款深度测评,生物医药实验室 ELN 选型参考

前言随着 NMPA 持续强化新药研发数据 ALCOA 完整性核查、GLP/21 CFR Part 11 合规要求落地,电子实验记录本(ELN)已经从可选工具转变为创新药企、CGT 研发平台、高校基础科研的基础设施。纸质记录本易损毁、溯源困难;通用云文档缺…

2026/7/23 20:09:26 阅读更多 →
消息队列(Kafka/RocketMQ)在削峰填谷与异步解耦中的深度实践

消息队列(Kafka/RocketMQ)在削峰填谷与异步解耦中的深度实践

消息队列(Kafka/RocketMQ)在削峰填谷与异步解耦中的深度实践 又见面了,我是高佣返利省赚客APP研发者微赚! 在省赚客APP的架构演进中,消息队列(MQ)扮演着“中枢神经”的关键角色。面对双11、618等…

2026/7/23 20:08:26 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻