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

Python面试30分钟突击掌握-LeetCode1-Array

Python 面试 30 分钟突击掌握:LeetCode 第一篇(Array)

如果你正在准备 Python 开发岗面试,时间又不多,这篇文章就是为你准备的。

很多同学刷题时容易陷入两个误区:

  1. 只看答案,不自己推导;
  2. 只记代码,不理解“为什么这样做”。

面试官真正想看到的,不是你背过多少题,而是你是否具备拆解问题、选择结构、评估复杂度、清晰表达的能力。
数组(Array)题目恰好是这四项能力最常见的考察入口。


为什么先练 Array?

在真实面试中,Array 是出镜率极高的题型,原因很简单:

  • 数组是最基础的数据结构,几乎所有业务代码都会接触;
  • 可以自然延伸到哈希表、双指针、滑动窗口、前缀和等高频技巧;
  • 易于从“简单题”问到“进阶优化题”,非常适合面试追问。

如果你只有 30 分钟,建议先把以下两题吃透:

  • Single Number
  • Two Sum

这两题覆盖了面试中的两类核心思路:位运算消重哈希换时间


今天的突击目标

你不需要一口气刷很多题,只要做到这四点:

  • 能在不看答案的前提下写出 AC 代码;
  • 能说清楚时间复杂度和空间复杂度;
  • 能解释为什么这个解法优于朴素解法;
  • 能描述常见边界条件和易错点。

题目一:Single Number(只出现一次的数字)

题目描述

给定一个非空整数数组nums,除了某个元素只出现一次以外,其余每个元素都出现两次。请找出那个只出现一次的元素。

要求:

  • 时间复杂度为线性级别O(n)
  • 额外空间复杂度为常数级别O(1)

示例:

  • 输入:[2,2,1],输出:1
  • 输入:[4,1,2,1,2],输出:4
  • 输入:[1],输出:1

面试中的思考路径

很多人第一反应是“排序后相邻比较”,这能做出来,但复杂度是O(n log n),不满足线性要求。
也有人想到用哈希计数,时间是O(n),但空间是O(n),不满足常数空间要求。

这时你要主动向面试官表达:

题目同时要求O(n)时间和O(1)空间,通常在暗示位运算(XOR)。

关键知识:异或 XOR

异或有三个特别有用的性质:

  • a ^ a = 0(相同数字异或为 0)
  • a ^ 0 = a(任何数字与 0 异或还是自己)
  • 满足交换律和结合律(顺序不影响结果)

因此,数组里成对出现的数字最终都会被“抵消”,只剩下那个只出现一次的数字。

Python 参考实现

fromtypingimportListclassSolution:defsingleNumber(self,nums:List[int])->int:result=0forvalueinnums:result^=valuereturnresult

复杂度分析

  • 时间复杂度:O(n),遍历一次数组;
  • 空间复杂度:O(1),只用了一个变量。

面试易错点

  • 忘记解释“为什么是O(1)空间”;
  • 只给代码,不给位运算性质推导;
  • 把异或写成了按位或|或按位与&

题目二:Two Sum(两数之和)

题目描述

给定一个整数数组nums和一个目标值target,请返回两个数的下标,使它们之和等于target

约束条件:

  • 每种输入只会对应一个有效答案;
  • 同一个元素不能重复使用;
  • 返回下标顺序不限。

示例:

  • nums = [2,7,11,15], target = 9,返回[0,1]
  • nums = [3,2,4], target = 6,返回[1,2]
  • nums = [3,3], target = 6,返回[0,1]

面试中的思考路径

朴素做法是双重循环,复杂度O(n^2)
题目 follow-up 会问:能否优于O(n^2)

这个追问基本就是在引导你使用哈希表(字典):

  • 遍历当前值value
  • 计算补数need = target - value
  • need是否已经在哈希表中;
  • 如果在,直接返回对应下标和当前下标;
  • 如果不在,把当前值和下标存入哈希表,继续遍历。

Python 参考实现

fromtypingimportListclassSolution:deftwoSum(self,nums:List[int],target:int)->List[int]:index_map={}fori,valueinenumerate(nums):need=target-valueifneedinindex_map:return[index_map[need],i]index_map[value]=ireturn[]

复杂度分析

  • 时间复杂度:O(n),每个元素只处理一次;
  • 空间复杂度:O(n),最坏情况下哈希表存下所有元素。

面试易错点

  • 先把当前值放入哈希表,再查补数,导致某些场景下错误复用自己;
  • 只会写代码,不会解释“为什么哈希可以把两层循环降成一层”;
  • 遇到重复元素(如[3,3])时思路混乱。

30 分钟高效练习法(推荐)

如果你现在就要突击,按这个节奏走:

  1. 5 分钟:看题 + 口述思路(先别写代码)
  2. 10 分钟:独立手写Single NumberTwo Sum
  3. 10 分钟:对照复杂度、边界条件,优化表达
  4. 5 分钟:脱稿复述(像在真实面试中那样讲给别人听)

你会发现,真正拉开差距的不是“会不会”,而是“能不能讲清楚”。


面试表达模板(可直接套用)

你可以这样说:

这题我先考虑朴素解法,时间复杂度是O(n^2)
由于题目追求更优复杂度,我会用哈希表把查找从线性降到常数平均时间,整体优化到O(n)
空间上会增加到O(n),这是典型的空间换时间。
我还会注意重复元素和不能复用同一元素这两个边界约束。

这段表达对Two Sum非常加分,也能迁移到很多类似题目。


小结

Array 是面试高频中的高频,Single NumberTwo Sum是你必须拿下的基础分。
请记住:刷题不是背答案,而是训练你在压力下快速建立正确解法并清晰表达。

如果你把本文两题做到下面这个标准,面试通过率会明显提升:

  • 代码能在白板/在线编辑器中一次写对;
  • 复杂度能张口即来;
  • 追问“还能更优吗”时不慌;
  • 能讲出方法选择背后的理由。

下一步你可以继续进入 Array 进阶题:双指针、滑动窗口和前缀和。
把这条主线打通,你在 Python 开发岗面试中的算法表现会稳定很多。

http://www.jsqmd.com/news/612478/

相关文章:

  • 嵌入式机器学习模型部署实战:从量化到推理优化
  • 普通话发声技巧
  • Excel批量查询终极指南:告别Ctrl+F,10分钟掌握多文件搜索神器
  • QQ多图片20260408
  • 【完整源码+数据集+部署教程】甘蔗茎节检测检测系统源码 [一条龙教学YOLOV8标注好的数据集一键训练_70+全套改进创新点发刊_Web前端展示]
  • 英雄联盟终极工具包:League-Toolkit 完全使用指南
  • 解放文档下载:kill-doc如何让你告别广告与登录的烦恼
  • IMX6ULL开发板学习-01(Linux文件目录和目录相关命令)
  • 从螯肢仿生到精准控制:OpenClaw龙虾机器人运动控制核心,逆解与轨迹规划全揭秘
  • 算法基础应用精讲【深度学习】-基于深度学习的多Agent入侵检测系统(理论篇)
  • 终极指南:3步完成FanControl风扇控制软件中文界面深度配置
  • 2026四川消防维保检测优质服务商推荐榜:消防维保费用、消防验收检测、第三方消防维保、专业消防检测、专业消防维保选择指南 - 优质品牌商家
  • 如何在Windows上一键安装最新版ADB和Fastboot驱动?
  • 终极免费网盘直链解析工具:让下载速度提升5倍的完整指南
  • 向华为学习——解读华为公司人力资源管理体系
  • 2026护发精油推荐:6款适合染烫受损发质的修复神器 - 博客万
  • 2025届最火的降AI率工具推荐榜单
  • FLUX.1-dev-fp8-dit文生图惊艳案例分享:FP8模型生成的国潮/敦煌/赛博国风系列艺术作品
  • 终极魔兽争霸III优化指南:WarcraftHelper 完整使用教程
  • SecureCRT日志记录的7个高效配置技巧与14个环境变量实战解析(%Y-%M-%D_%H_%S_session.log %t)
  • 3种方法解决iOS 15-16激活锁:applera1n图形化工具实战指南
  • Spring AI 快速入门教程:基于VUE3与Spring AI技术实现的“流式聊天““打字机效果“功能
  • iPhone将内置本地大模型,手机端AI实现0 token成本时代来临?
  • 超声AI 2026年市场格局:头部公司怎么选、谁在领跑
  • 3步打造企业级数据可视化大屏:DataRoom零代码解决方案
  • 机柜
  • 4个核心实践:RVC语音转换从技术原理到商业落地的全流程指南
  • Qwen3-14B-Int4-AWQ在人工智能教学中的应用:交互式机器学习概念解释器
  • FFmpeg快速入门:从下载到环境变量配置全攻略
  • 如何实现跨平台VSDX文件无缝协作?drawio-desktop全攻略