type
Post
status
Published
date
Mar 12, 2026
slug
Lc_1
summary
tags
数据结构
算法
category
数据结构与算法
icon
password
pt1
哈希
E1.两数之和
给定一个整数数组
nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。
你可以按任意顺序返回答案。示例:
核心思路
该题目可以通过暴力枚举的方法计算出满足
nums[i]+nums[j]=target的i和j,但是时间复杂度过高,因此采用哈希表的方法实现。
遍历nums数组中的每一个元素,若target-nums[i]不存在于哈希表中,则将num[i]作为key,i作为value插入哈希表。【可以避免nums中相同元素相加为target】
时间复杂度:由于哈希表查询的时间复杂度为 $O(1)$,因此,题目的复杂度取决于遍历nums数组,所以为 $O(n)$代码
M49.字母异位词分组
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的所有字母得到的一个新单词。
示例:
核心思路
代码
M128.最长连续序列
给定一个未排序的整数数组
nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为
O(n) 的算法解决此问题。示例:
核心思路
代码
双指针
E283.移动零
给定一个数组
nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
请注意 ,必须在不复制数组的情况下原地对数组进行操作。示例
核心思路
采用类似快排的划分思想,以非0数为基准,左边为非零数,右边为0,通过
zeroindex记录第一个为0的元素的下标。然后循环遍历nums数组,当nums[i]!=0时,nums[i]和nums[zeroindex]进行交换,然后zeroindex++
时间复杂度:O(n),空间复杂度:O(1)代码
M11.盛水最多的容器
给定一个长度为
n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。找出其中的两条线,使得它们与
x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。
说明:你不能倾斜容器。
示例:

核心思路
代码
M15.三数之和
给你一个整数数组
nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请你返回所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。
示例:
核心思路
代码
滑动窗口
M3.无重复字符的最长子串
给定一个字符串
s ,请你找出其中不含有重复字符的 最长子串 的长度。示例:
核心思路
代码
M438.找到字符串中所有字母异位词
给定两个字符串
s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。异位词 指由相同字母重排列形成的字符串(包括相同的字符串)。
示例:
核心思路
代码
子串
M560.和为 K 的子数组
给你一个整数数组
nums 和一个整数 k ,请你统计并返回该数组中和为 k 的子数组的个数。子数组是数组中元素的连续非空序列。
示例:
核心思路
代码
普通数组
M53.最大子数组和
给你一个整数数组
nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组是数组中的一个连续部分。
示例:
核心思路
代码
M56.合并区间
以数组
intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。示例:
核心思路
代码
M189.轮转数组
给定一个整数数组
nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。示例:

核心思路
代码
【方法一】
【方法二】
M238.除自身以外数组的乘积
给你一个整数数组
nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。题目数据 保证 数组
nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。请不要使用除法,且在
O(n) 时间复杂度内完成此题。示例:

核心思路
代码
矩阵
M73.矩阵置零
给定一个 m×n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用原地算法。
示例:

核心思路
代码
M54.螺旋矩阵
给你一个
m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。示例:

核心思路
代码
M48.旋转图像
给定一个 n × n 的二维矩阵
matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。
核心思路
代码
M240.搜索二维矩阵 II
编写一个高效的算法来搜索
m × n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:- 每行的元素从左到右升序排列。
- 每列的元素从上到下升序排列。