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

力扣 Hot 100 普通数组算法题 Python 实现

力扣 Hot 100 数组专题涵盖最大子数组和、合并区间、轮转数组、除自身以外数组的乘积及缺失的第一个正数。解决方案涉及动态规划、前缀和优化、贪心策略及原地交换技巧。提供 Python 语言实现的完整代码示例与核心逻辑解析,帮助掌握常见数组处理模式。

dehua dong发布于 2026/3/15更新于 2026/9/1163 浏览
力扣 Hot 100 普通数组算法题 Python 实现

53. 最大子数组和

在这里插入图片描述

思路 1:前缀和
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:动态规划
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. 合并区间

在这里插入图片描述

思路

先将 intervals 中的区间按起始排序。这样每个新来的区间就不用和已经确定好没要交集的区间比较了。

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. 轮转数组

在这里插入图片描述

思路

这道题可以推公式出来,如果不想推的话直接根据结果反转。注意不要使用切片或者列表的 insert 语法。这都会产生额外的空间。

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)
class Solution:
    def rotate2(self, nums: List[int], k: int) -> None:
        n = len(nums)
        k %= n
        nums.reverse()
        nums[:k] = reversed(nums[:k])
        nums[k:] = reversed(nums[k:])

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

在这里插入图片描述

思路

前后缀分解。维护一个 pre[i]:表示 0 到 i-1 的乘积,suf[i] 表示 i+1 到 n-1 的乘积。

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. 缺失的第一个正数

在这里插入图片描述

思路

将每个数字放到自己值对应的索引上。

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. 思路 1:前缀和
  3. 思路 2:动态规划
  4. 56. 合并区间
  5. 思路
  6. 189. 轮转数组
  7. 思路
  8. 238. 除自身以外数组的乘积
  9. 思路
  10. 41. 缺失的第一个正数
  11. 思路

更多推荐文章

查看全部
  • Gitee 代码上传实战:Git 基础与远程仓库配置
  • 机器人行业商业化争夺战:春晚曝光、量产进展与 IPO 窗口
  • C++备忘录模式:优雅实现对象状态保存与恢复
  • Ambari Web 3.0.0 本地启动与二次开发环境搭建
  • AI 辅助快速生成 Mermaid 图表实战指南
  • 夸克网盘精选资源汇总:电子书、软件与学习素材
  • Spring Boot 数据导入导出与报表生成实战
  • SimVascular 心血管建模高效使用技巧
  • 2026 年 2 月 AIGC 行业模型发布与前沿资讯
  • AI 提示词写作指南:精准表达与场景应用
  • 使用 Python 查询和下载 Sentinel-1 轨道数据
  • 基于 Java 的校园二手物品在线交易平台设计与实现
  • Linux 进程间通信进阶:管道与共享内存实战
  • FPGA 读写 DDR4(一)MIG IP 核控制信号
  • Trae 集成 Figma MCP 实现前端代码自动生成
  • ZooKeeper 架构深度解析:分布式协调服务的核心设计与实现
  • 腾讯混元大模型业务落地实践与技术方案
  • SAM 3 论文解读:可提示概念分割任务与架构
  • C++ 异常处理机制:捕获、自定义与实战
  • 大语言模型主流架构与训练技术详解

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如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