Algorithm

整数与IP地址间的转换

255 字 1 分钟阅读

原理:ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成一个长整数。 举例:一个 ip 地址为 10.0.3.193

LCP 33. 蓄水

65 字 少于 1 分钟阅读

题目链接

面试题 02.07. 链表相交

326 字 1 分钟阅读

给定两个(单向)链表,判定它们是否相交并返回交点。请注意相交的定义基于节点的引用,而不是基于节点的值。换句话说,如果一个链表的第k个节点与另一个链表的第j个节点是同一节点(引用完全相同),则这两个链表相交。

剑指 Offer 58 - II. 左旋转字符串

94 字 少于 1 分钟阅读

字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串”abcdefg”和数字2,该函数将返回左旋转两位得到的结果”cdefgab”。

剑指 Offer 05. 替换空格

119 字 少于 1 分钟阅读

请实现一个函数,把字符串 s 中的每个空格替换成”%20”。

1005. K 次取反后最大化的数组和

75 字 少于 1 分钟阅读

给定一个整数数组 A,我们只能用以下方法修改该数组:我们选择某个索引 i 并将 A[i] 替换为 -A[i],然后总共重复这个过程 K 次。(我们可以多次选择同一个索引 i。)

977. 有序数组的平方

242 字 1 分钟阅读

给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。

895. 最大频率栈

97 字 少于 1 分钟阅读

设计一个类似堆栈的数据结构,将元素推入堆栈,并从堆栈中弹出出现频率最高的元素。

746. 使用最小花费爬楼梯

229 字 1 分钟阅读

给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。

707. 设计链表

616 字 3 分钟阅读

设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。

704. 二分查找

230 字 1 分钟阅读

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。

701. 二叉搜索树中的插入操作

103 字 少于 1 分钟阅读

给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同。

700. 二叉搜索树中的搜索

75 字 少于 1 分钟阅读

给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。

669. 修剪二叉搜索树

304 字 1 分钟阅读

给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树不应该改变保留在树中的元素的相对结构(即,如果没有被移除,原有的父代子代关系都应当保留)。 可以证明,存在唯一的答案。

654. 最大二叉树

220 字 1 分钟阅读

给定一个不含重复元素的整数数组 nums 。一个以此数组直接递归构建的 最大二叉树 定义如下:

637. 二叉树的层平均值

121 字 少于 1 分钟阅读

给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。

617. 合并二叉树

109 字 少于 1 分钟阅读

给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。

572. 另一棵树的子树

64 字 少于 1 分钟阅读

给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 false 。

541. 反转字符串 II

105 字 少于 1 分钟阅读

给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。

538. 把二叉搜索树转换为累加树

96 字 少于 1 分钟阅读

给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。

530. 二叉搜索树的最小绝对差

175 字 少于 1 分钟阅读

给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。

513. 找树左下角的值

179 字 少于 1 分钟阅读

给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。

509. 斐波那契数

190 字 少于 1 分钟阅读

斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:

501. 二叉搜索树中的众数

140 字 少于 1 分钟阅读

给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。

494. 目标和

437 字 2 分钟阅读

给你一个整数数组 nums 和一个整数 target 。

491. 递增子序列

157 字 少于 1 分钟阅读

给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。

459. 重复的子字符串

198 字 少于 1 分钟阅读

给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。

455. 分发饼干

117 字 少于 1 分钟阅读

假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。

454. 四数相加 II

218 字 1 分钟阅读

给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。

450. 删除二叉搜索树中的节点

168 字 少于 1 分钟阅读

给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。

429. N 叉树的层序遍历

104 字 少于 1 分钟阅读

给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。

416. 分割等和子集

145 字 少于 1 分钟阅读

给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。

404. 左叶子之和

155 字 少于 1 分钟阅读

计算给定二叉树的所有左叶子之和。

392. 判断子序列

274 字 1 分钟阅读

给定字符串 s 和 t ,判断 s 是否为 t 的子序列。

383. 赎金信

99 字 少于 1 分钟阅读

给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串 ransom 能不能由第二个字符串 magazines 里面的字符构成。如果可以构成,返回 true ;否则返回 false。

376. 摆动序列

100 字 少于 1 分钟阅读

如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为 摆动序列 。第一个差(如果存在的话)可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。

349. 两个数组的交集

95 字 少于 1 分钟阅读

给定两个数组,编写一个函数来计算它们的交集。

347. 前 K 个高频元素

294 字 1 分钟阅读

给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。

344. 反转字符串

162 字 少于 1 分钟阅读

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。

343. 整数拆分

139 字 少于 1 分钟阅读

给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化。

332. 重新安排行程

271 字 1 分钟阅读

给你一份航线列表 tickets ,其中 tickets[i] = [fromi, toi] 表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。

257. 二叉树的所有路径

100 字 少于 1 分钟阅读

给定一个二叉树,返回所有从根节点到叶子节点的路径。

242. 有效的字母异位词

124 字 少于 1 分钟阅读

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。

239. 滑动窗口最大值

250 字 1 分钟阅读

给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。

232. 用栈实现队列

205 字 1 分钟阅读

请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):

225. 用队列实现栈

212 字 1 分钟阅读

请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。

216. 组合总和 III

134 字 少于 1 分钟阅读

难度中等326收藏分享切换为英文接收动态反馈

206. 反转链表

117 字 少于 1 分钟阅读

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

203. 移除链表元素

116 字 少于 1 分钟阅读

给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。

202. 快乐数

126 字 少于 1 分钟阅读

编写一个算法来判断一个数 n 是不是快乐数。

199. 二叉树的右视图

254 字 1 分钟阅读

给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。

147. 对链表进行插入排序

140 字 少于 1 分钟阅读

给定单个链表的头 head ,使用 插入排序 对链表进行排序,并返回排序后链表的头 。

144. 二叉树的前序遍历

131 字 少于 1 分钟阅读

给你二叉树的根节点 root ,返回它节点值的 前序 遍历。

142. 环形链表 II

134 字 少于 1 分钟阅读

给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。

131. 分割回文串

163 字 少于 1 分钟阅读

给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。

113. 路径总和 II

155 字 少于 1 分钟阅读

给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。

112. 路径总和

255 字 1 分钟阅读

给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。

110. 平衡二叉树

103 字 少于 1 分钟阅读

给定一个二叉树,判断它是否是高度平衡的二叉树。

108. 将有序数组转换为二叉搜索树

131 字 少于 1 分钟阅读

给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。

107. 二叉树的层序遍历 II

97 字 少于 1 分钟阅读

给定一个二叉树,返回其节点值自底向上的层序遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)

102. 二叉树的层序遍历

238 字 1 分钟阅读

给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。

101. 对称二叉树

183 字 少于 1 分钟阅读

给定一个二叉树,检查它是否是镜像对称的。

100. 相同的树

116 字 少于 1 分钟阅读

给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。

98. 验证二叉搜索树

269 字 1 分钟阅读

给定一个二叉树,判断其是否是一个有效的二叉搜索树。

96. 不同的二叉搜索树

128 字 少于 1 分钟阅读

给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。

94. 二叉树的中序遍历

144 字 少于 1 分钟阅读

给定一个二叉树的根节点 root ,返回它的 中序 遍历。

93. 复原 IP 地址

220 字 1 分钟阅读

给定一个只包含数字的字符串,用以表示一个 IP 地址,返回所有可能从 s 获得的 有效 IP 地址 。你可以按任何顺序返回答案。

90. 子集 II

140 字 少于 1 分钟阅读

给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。

88. 合并两个有序数组

219 字 1 分钟阅读

给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。

78. 子集

130 字 少于 1 分钟阅读

给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。

77. 组合

152 字 少于 1 分钟阅读

给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。

71. 简化路径

163 字 少于 1 分钟阅读

给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 '/' 开头),请你将其转化为更加简洁的规范路径。

70. 爬楼梯

242 字 1 分钟阅读

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

63. 不同路径 II

182 字 少于 1 分钟阅读

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。

62. 不同路径

175 字 少于 1 分钟阅读

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。

61. 旋转链表

143 字 少于 1 分钟阅读

[题目描述] (https://leetcode.cn/problems/rotate-list/)

59. 螺旋矩阵 II

144 字 少于 1 分钟阅读

给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。

55. 跳跃游戏

120 字 少于 1 分钟阅读

给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。

51. N 皇后

343 字 1 分钟阅读

n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。

47. 全排列 II

237 字 1 分钟阅读

给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。

46. 全排列

128 字 少于 1 分钟阅读

给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。

45. 跳跃游戏 II

60 字 少于 1 分钟阅读

给你一个非负整数数组 nums ,你最初位于数组的第一个位置。

42. 接雨水

131 字 少于 1 分钟阅读

题目

40. 组合总和 II

243 字 1 分钟阅读

给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。

39. 组合总和

176 字 少于 1 分钟阅读

给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。

37. 解数独

279 字 1 分钟阅读

编写一个程序,通过填充空格来解决数独问题。

20. 有效的括号

150 字 少于 1 分钟阅读

给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。

18. 四数之和

267 字 1 分钟阅读

给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。

17. 电话号码的字母组合

147 字 少于 1 分钟阅读

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。

15. 三数之和

285 字 1 分钟阅读

给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。

9. 回文数

121 字 少于 1 分钟阅读

题目链接

算法思路

80 字 少于 1 分钟阅读

先判断边界条件,尤其注意 int 类型边界问题。 数据如果元素顺序对结果没有影响的话尝试先进行排序。 数组遍历的时候试一下倒序遍历,看是否比正序更好处理。 数组双层循环遍历使用双指针优化,双指针还可以尝试下同向、逆向、相向是否可行。 如果无思路就先想出暴力解法,再根据暴力解法进行优化。 ...

返回顶部 ↑

Blog

Spring IOC 源码解析

7145 字 35 分钟阅读

Spring 最重要的概念是 IOC 和 AOP,本篇文章其实就是要带领大家来分析下 Spring 的 IOC 容器。既然大家平时都要用到 Spring,怎么可以不好好了解 Spring 呢?阅读本文并不能让你成为 Spring 专家,不过一定有助于大家理解 Spring 的很多概念,帮助大家排查应用中和 Spr...

Spring Bean 生命周期

48 字 少于 1 分钟阅读

Bean 容器找到配置文件中 Spring Bean 的定义。 Bean 容器利用 Java Reflection API 创建一个Bean的实例。 如果涉及到一些属性值 利用 set()方法设置一些属性值。 如果 Bean 实现了 BeanNameAware 接口,调用 setBeanName...

Spring AOP 使用

1220 字 6 分钟阅读

前面写过 Spring IOC 的源码分析,很多读者希望可以出一个 Spring AOP 的源码分析,不过 Spring AOP 的源码还是比较多的,写出来不免篇幅会大些。

Spring MVC 流程

76 字 少于 1 分钟阅读

SpringMVC 其实就是对 Servlet 的封装,屏蔽掉 Servlet 很多的细节。比如写 Servlet 的时候,要获取参数需要不断的 getParameter,在SpringMVC 方法定义对应的 JavaBean,只要属性名与参数名一致,SpringMVC 就可以帮我们实现「将参数封装到 JavaB...

MySQL SQL优化

1678 字 8 分钟阅读

Optimizing SELECT Statements(优化 SELECT 语句)

MySQL Explain

451 字 2 分钟阅读

MySQL 官方文档 8.8.2 EXPLAIN Output Format

返回顶部 ↑

MySQL

MySQL SQL优化

1678 字 8 分钟阅读

Optimizing SELECT Statements(优化 SELECT 语句)

MySQL Explain

451 字 2 分钟阅读

MySQL 官方文档 8.8.2 EXPLAIN Output Format

返回顶部 ↑

SpringMVC

Spring MVC 流程

76 字 少于 1 分钟阅读

SpringMVC 其实就是对 Servlet 的封装,屏蔽掉 Servlet 很多的细节。比如写 Servlet 的时候,要获取参数需要不断的 getParameter,在SpringMVC 方法定义对应的 JavaBean,只要属性名与参数名一致,SpringMVC 就可以帮我们实现「将参数封装到 JavaB...

返回顶部 ↑

Spring

Spring IOC 源码解析

7145 字 35 分钟阅读

Spring 最重要的概念是 IOC 和 AOP,本篇文章其实就是要带领大家来分析下 Spring 的 IOC 容器。既然大家平时都要用到 Spring,怎么可以不好好了解 Spring 呢?阅读本文并不能让你成为 Spring 专家,不过一定有助于大家理解 Spring 的很多概念,帮助大家排查应用中和 Spr...

Spring Bean 生命周期

48 字 少于 1 分钟阅读

Bean 容器找到配置文件中 Spring Bean 的定义。 Bean 容器利用 Java Reflection API 创建一个Bean的实例。 如果涉及到一些属性值 利用 set()方法设置一些属性值。 如果 Bean 实现了 BeanNameAware 接口,调用 setBeanName...

Spring AOP 使用

1220 字 6 分钟阅读

前面写过 Spring IOC 的源码分析,很多读者希望可以出一个 Spring AOP 的源码分析,不过 Spring AOP 的源码还是比较多的,写出来不免篇幅会大些。

返回顶部 ↑