LeetCode 面试经典 150 题回顾

LeetCode 面试经典 150 题回顾

目录

一、数组 / 字符串

1.合并两个有序数组 (简单)

2.移除元素 (简单)

3.删除有序数组中的重复项 (简单)

4.删除有序数组中的重复项 II(中等)

5.多数元素(简单)

6.轮转数组 (中等)

7.买卖股票的最佳时机(简单)

8.买卖股票的最佳时机 II (中等)

9.跳跃游戏(中等)

10.跳跃游戏 II(中等)

11.H 指数(中等)

12.O(1) 时间插入、删除和获取随机元素(中等)

13.除自身以外数组的乘积(中等)

14.加油站(中等)

15.发糖果(困难)

16.接雨水 (困难)

17.罗马数字转整数(简单)

18.整数转罗马数字(中等)

19.最后一个单词的长度(简单)

20.最长公共前缀(简单)

21.反转字符串中的单词(中等)

22.Z 字形变换(中等)

23.找出字符串中第一个匹配项的下标 (简单)

24.文本左右对齐(困难)

二、双指针

25.验证回文串(简单)

26.判断子序列(简单)

27.两数之和 II - 输入有序数组(中等)

28.盛最多水的容器(中等)

29.三数之和(中等)

三、滑动窗口

30.长度最小的子数组(中等)

31.无重复字符的最长子串(中等)

32.串联所有单词的子串(困难)

33.最小覆盖子串(困难)

四、矩阵

34.有效的数独(中等)

35.螺旋矩阵(中等)

36.旋转图像(中等)

37.矩阵置零 (中等)

38.生命游戏(中等)

五、哈希表

39.赎金信(简单)

40.同构字符串(简单)

41.单词规律(简单)

42.有效的字母异位词(简单)

43.字母异位词分组(中等)

44.两数之和(简单)

45.快乐数(简单)

46.存在重复元素 II(简单)

47.最长连续序列(中等)

六、区间

48.汇总区间(简单)

49.合并区间(中等)

50.插入区间(中等)

51.用最少数量的箭引爆气球(中等)

七、栈

52.有效的括号(简单)

53.简化路径(中等)

54.最小栈(中等)

55.逆波兰表达式求值(中等)

56.基本计算器(困难)

八、链表

57.环形链表(简单)

 58.两数相加(中等)

59.合并两个有序链表(简单)

60.随机链表的复制(中等)

61.反转链表 II(中等)

62.K 个一组翻转链表 (困难)

63.删除链表的倒数第 N 个结点(中等)

64.删除排序链表中的重复元素 II(中等)

65.旋转链表(中等)

66.分隔链表(中等)

67.LRU 缓存(中等)

九、二叉树

68.二叉树的最大深度(简单)

69.相同的树(简单)

70.翻转二叉树(简单)

71.对称二叉树(简单)

72.从前序与中序遍历序列构造二叉树(中等)

73. 从中序与后序遍历序列构造二叉树(中等)

74.填充每个节点的下一个右侧节点指针 II(中等)

75.二叉树展开为链表(中等)

76.路径总和(简单)

77.求根节点到叶节点数字之和(中等)

78.二叉树中的最大路径和 (困难)

79.二叉搜索树迭代器(中等)

80.完全二叉树的节点个数(简单)

81.二叉树的最近公共祖先(中等)

十、二叉树层次遍历

82.二叉树的右视图(中等)

83.二叉树的层平均值(简单)

84.二叉树的层序遍历(中等)

85.二叉树的锯齿形层序遍历(中等)

十一、二叉搜索树

86.二叉搜索树的最小绝对差(简单)

87.二叉搜索树中第 K 小的元素(中等)

88.验证二叉搜索树(中等)

十二、图

89.岛屿数量(中等)

90.被围绕的区域(中等)

91.克隆图(中等)

92.除法求值(中等)

93.课程表(中等)

94.课程表 II(中等)

十三、图的广度优先搜索

95.蛇梯棋(中等)

96.最小基因变化(中等)

97.单词接龙(困难)

十四、字典树

98.实现 Trie (前缀树)(中等)

99.添加与搜索单词 - 数据结构设计(中等)

100.单词搜索 II(困难)

十五、回溯

101.电话号码的字母组合(中等)

102.组合 (中等)

103.全排列(中等)

104.组合总和(中等)

105.N 皇后 II(困难)

106.括号生成(中等)

107.单词搜索(中等)

十六、分治

108.将有序数组转换为二叉搜索树(简单)

109.排序链表(中等)

110.建立四叉树(中等)

111.合并 K 个升序链表 (困难)

十七、Kadane 算法

 112.最大子数组和 (中等)

113.环形子数组的最大和

十八、二分查找

114.搜索插入位置(简单)

115.搜索二维矩阵(中等)

116.寻找峰值(中等)

117.搜索旋转排序数组(中等)

118.在排序数组中查找元素的第一个和最后一个位置(中等)

119.寻找旋转排序数组中的最小值(中等)

120.寻找两个正序数组的中位数 (困难)

十九、堆

121.数组中的第K个最大元素(中等)

122.IPO(困难)

123.查找和最小的 K 对数字(中等)

124.数据流的中位数(困难)

二十、位运算

125.二进制求和(简单)

126.颠倒二进制位(简单)

127.位1的个数(简单)

128.只出现一次的数字(简单)

129.只出现一次的数字 II(中等)

130.数字范围按位与(中等)

二十一、数学

131.回文数(简单)

132.加一(简单)

133. 阶乘后的零(中等)

134.x 的平方根 (中等)

135.Pow(x, n)(中等)

136.直线上最多的点数(困难)

二十二、一维动态规划

137.爬楼梯(简单)

138.打家劫舍(中等)

139.单词拆分 (中等)

140.零钱兑换(中等)

141.最长递增子序列  (中等)

二十三、多维动态规划

142.三角形最小路径和(中等)

143.最小路径和(中等)

144.不同路径 II(中等)

145.最长回文子串(中等)

146.交错字符串(中等)

 147.编辑距离(中等)

148.买卖股票的最佳时机 III(困难)

149.买卖股票的最佳时机 IV(困难)

150.最大正方形(中等)


干货分享,感谢您的阅读!

一、数组 / 字符串

1.合并两个有序数组 (简单)

题目描述

给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和&nbs

Read more

超酷!前端人必备的 3 个 Skills:搞定高级 UI,拿捏最佳实践,最后一个直接拉满“续航”!

最近和几位前端开发者聊天,发现一个有趣的现象:AI 写代码越来越快,但代码质量的差距反而越来越大。 有人用 Cursor 写出来的页面,一眼就能看出是 AI 生成的——紫色渐变背景、Inter 字体、千篇一律的卡片布局。而有的人用同样的工具,却能产出让人眼前一亮的作品。 差距在哪里?不在 AI 工具本身,而在于你给 AI 注入了什么样的"技能包" 。 今天想分享前端开发必备的三个 Skills。前两个是干货分享,能立刻提升你的代码质量;第三个可能出乎你的意料,但确实是我最近的真实体会。 Skill 1: 让 AI 懂设计,告别"AI 味"的界面 你有没有遇到过这种情况——AI 生成的页面虽然能用,但总觉得哪里不对劲? 布局平庸、配色单调、

By Ne0inhk
进阶数据结构: AVL树

进阶数据结构: AVL树

嘿,各位技术潮人!好久不见甚是想念。生活就像一场奇妙冒险,而编程就是那把超酷的万能钥匙。此刻,阳光洒在键盘上,灵感在指尖跳跃,让我们抛开一切束缚,给平淡日子加点料,注入满满的passion。准备好和我一起冲进代码的奇幻宇宙了吗?Let's go! 我的博客:yuanManGan 我的专栏:C++入门小馆 C言雅韵集 数据结构漫游记  闲言碎语小记坊 题山采玉 领略算法真谛 目录 AVL相关概念:  AVL树的结构 Insert  旋转 右旋: 编辑 左单旋:  右左双旋: 左右双旋:  完整的插入: 其他简单的操作:  测试: AVL相关概念: AVL树是由二叉搜索树加上一定的限制而形成的树,AVL树:它的左右子树都是AVL树,且左右子树的高度差的绝对值不超过1。AVL树是⼀颗⾼度平衡搜索⼆叉树, 通过控制⾼度差去控制平衡。

By Ne0inhk
我爱学算法之—— 二分查找(下)

我爱学算法之—— 二分查找(下)

一、寻找峰值 题目解析 对于这道题,给定一个数组nums,在这数组中,可能存在多个峰值元素,我们只需找到一个峰值,然后返回峰值索引即可。 峰值元素:严格大于左右相邻的元素。 题目中给定:nums[0]和nums[n]可以看做负无穷。 算法思路 对于这道题,首先暴力解法:遍历整个数组,依次判断一个元素它是不是峰值元素。 暴力解法的时间复杂度是O(n);并且暴力解法它并没有用到题目中给的:nums[0]和nums[n]可以看做负无穷这一个条件。 当我们遍历i位置时,有且仅有两种情况:递增/递减(题目给定 nums[i] != nums[i+1])。 当i位置呈现递增趋势时,也就是nums[i] > nums[i+1],题目又给出nums[0] = nums[

By Ne0inhk