跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python算法

力扣 Hot100 普通数组题解 Python 实现

力扣 Hot100 普通数组系列涵盖最大子数组和、合并区间、轮转数组、除自身以外数组的乘积及缺失的第一个正数。针对每道题提供了 Python 代码实现与核心思路解析,涉及前缀和优化、动态规划、双指针反转及原地哈希等算法技巧,旨在帮助读者掌握数组类问题的常见解法。

PentesterX发布于 2026/3/27更新于 2026/7/2946 浏览
力扣 Hot100 普通数组题解 Python 实现

一、53. 最大子数组和

  • 思路:前缀和优化。维护最小前缀和,避免双重循环。
class Solution:
    def maxSubArray(self, nums: List[int]) -> int:
        if len(nums) == 1:
            return nums[0]
        res = float('-inf')
        preSum = 0
        minPreSum = 0
        for n in nums:
            preSum += n
            res = max(res, preSum - minPreSum)
            minPreSum = min(minPreSum, preSum)
        return res
  • 思路 2:动态规划 (DP)。定义 dp[i] 表示以 nums[i] 结尾的最大子数组和。
class Solution:
    def maxSubArray(self, nums):
        dp = [0] * len(nums)
        dp[0] = nums[0]
        for i in range(1, len(nums)):
            dp[i] = max(dp[i-1], 0) + nums[i]
        return max(dp)

二、56. 合并区间

  • 思路:先将区间按起始位置排序。遍历区间,若当前区间与结果集最后一个区间有交集则合并,否则添加新区间。
class Solution:
    def merge(self, intervals: List[List[int]]) -> List[List[int]]:
        intervals.sort(key=lambda p: p[0])
        res = []
        for p in intervals:
            if res and p[0] <= res[-1][1]:
                res[-1][1] = max(res[-1][1], p[1])
            else:
                res.append(p)
        return res

三、189. 轮转数组

  • 思路:利用反转操作实现原地旋转,注意处理 k 大于数组长度的情况。
class Solution:
    def rotate(self, nums: List[int], k: int) -> None:
        def reverse(i, j):
            while i < j:
                nums[i], nums[j] = nums[j], nums[i]
                i += 1
                j -= 1
        
        n = len(nums)
        k %= n
        reverse(0, n - 1)
        reverse(0, k - 1)
        reverse(k, n - 1)

四、238. 除自身以外数组的乘积

  • 思路:前后缀分解。分别计算每个位置左侧和右侧的乘积。
class Solution:
    def productExceptSelf(self, nums: List[int]) -> List[int]:
        n = len(nums)
        pre = [1] * n
        for i in range(1, n):
            pre[i] = pre[i-1] * nums[i-1]
        suf = [1] * n
        for i in range(n-2, -1, -1):
            suf[i] = suf[i+1] * nums[i+1]
        return [p * s for p, s in zip(pre, suf)]

五、41. 缺失的第一个正数

  • 思路:原地哈希。将每个数字放到其值对应的索引位置上(例如值为 1 放在索引 0)。
class Solution:
    def firstMissingPositive(self, nums: List[int]) -> int:
        n = len(nums)
        for i in range(n):
            while 1 <= nums[i] <= n and nums[nums[i]-1] != nums[i]:
                nums[nums[i]-1], nums[i] = nums[i], nums[nums[i]-1]
        for i in range(n):
            if nums[i] != i + 1:
                return i + 1
        return n + 1

目录

  1. 一、53. 最大子数组和
  2. 二、56. 合并区间
  3. 三、189. 轮转数组
  4. 四、238. 除自身以外数组的乘积
  5. 五、41. 缺失的第一个正数
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • AI 大模型深度探索:理论、实践与职业成长攻略
  • Ollama 本地部署与运行大型语言模型指南
  • 多款实用 Python 脚本实现工作自动化
  • OpenAI 发布 GPT-5 系列:标准版、Mini 与 Nano 解析
  • Mac M1/M2 原生运行 RMBG-2.0 AI 抠图工具指南
  • C++ 入门进阶:输入输出流、缺省参数与函数重载
  • C++ 智能指针:内存管理的利器
  • Flutter 三方库 whatsapp_bot_flutter 鸿蒙适配与实战指南
  • Linux 网络基础与 TCP 协议核心机制解析
  • 大模型已有文本表征能力,为何仍需向量表征(Embedding)模型?
  • Java 动态代理详解:JDK 与 CGLIB 实现对比
  • ThreadLocal 原理、使用场景及内存泄漏问题解析
  • n8n 集成飞书机器人实战指南:常见坑点与解决方案
  • STEP3-VL-10B WebUI 启用历史会话与上下文记忆教程
  • AI 产品经理如何面对 ChatGPT 带来的产品形态变革与挑战
  • 文心一言 4.5 开源实测:适合普通人的中文 AI 模型指南
  • HarmonyOS 5.0 物联网开发:基于星闪的智能家居边缘计算网关
  • Python 推导式底层实现:从语法糖到 CPython 字节码分析
  • PHP 低代码流程建模的 5 个致命误区与优化实践
  • Ollama 模型下载慢?国内镜像加速与 LLama-Factory 微调指南

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online