auto commit
This commit is contained in:
parent
99a330cb71
commit
832cf4086e
|
@ -17,7 +17,6 @@
|
||||||
* [13. 机器人的运动范围](#13-机器人的运动范围)
|
* [13. 机器人的运动范围](#13-机器人的运动范围)
|
||||||
* [14. 剪绳子](#14-剪绳子)
|
* [14. 剪绳子](#14-剪绳子)
|
||||||
* [15. 二进制中 1 的个数](#15-二进制中-1-的个数)
|
* [15. 二进制中 1 的个数](#15-二进制中-1-的个数)
|
||||||
* [高质量的代码](#高质量的代码)
|
|
||||||
* [16. 数值的整数次方](#16-数值的整数次方)
|
* [16. 数值的整数次方](#16-数值的整数次方)
|
||||||
* [17. 打印从 1 到最大的 n 位数](#17-打印从-1-到最大的-n-位数)
|
* [17. 打印从 1 到最大的 n 位数](#17-打印从-1-到最大的-n-位数)
|
||||||
* [18.1 在 O(1) 时间内删除链表节点](#181-在-o1-时间内删除链表节点)
|
* [18.1 在 O(1) 时间内删除链表节点](#181-在-o1-时间内删除链表节点)
|
||||||
|
@ -30,7 +29,6 @@
|
||||||
* [24. 反转链表](#24-反转链表)
|
* [24. 反转链表](#24-反转链表)
|
||||||
* [25. 合并两个排序的链表](#25-合并两个排序的链表)
|
* [25. 合并两个排序的链表](#25-合并两个排序的链表)
|
||||||
* [26. 树的子结构](#26-树的子结构)
|
* [26. 树的子结构](#26-树的子结构)
|
||||||
* [解决面试题的思路](#解决面试题的思路)
|
|
||||||
* [27. 二叉树的镜像](#27-二叉树的镜像)
|
* [27. 二叉树的镜像](#27-二叉树的镜像)
|
||||||
* [28.1 对称的二叉树](#281-对称的二叉树)
|
* [28.1 对称的二叉树](#281-对称的二叉树)
|
||||||
* [28.2 平衡二叉树](#282-平衡二叉树)
|
* [28.2 平衡二叉树](#282-平衡二叉树)
|
||||||
|
@ -46,7 +44,6 @@
|
||||||
* [36. 二叉搜索树与双向链表](#36-二叉搜索树与双向链表)
|
* [36. 二叉搜索树与双向链表](#36-二叉搜索树与双向链表)
|
||||||
* [37. 序列化二叉树](#37-序列化二叉树)
|
* [37. 序列化二叉树](#37-序列化二叉树)
|
||||||
* [38. 字符串的排列](#38-字符串的排列)
|
* [38. 字符串的排列](#38-字符串的排列)
|
||||||
* [优化时间和空间效率](#优化时间和空间效率)
|
|
||||||
* [39. 数组中出现次数超过一半的数字](#39-数组中出现次数超过一半的数字)
|
* [39. 数组中出现次数超过一半的数字](#39-数组中出现次数超过一半的数字)
|
||||||
* [40. 最小的 K 个数](#40-最小的-k-个数)
|
* [40. 最小的 K 个数](#40-最小的-k-个数)
|
||||||
* [41.1 数据流中的中位数](#411-数据流中的中位数)
|
* [41.1 数据流中的中位数](#411-数据流中的中位数)
|
||||||
|
@ -57,14 +54,14 @@
|
||||||
* [45. 把数组排成最小的数](#45-把数组排成最小的数)
|
* [45. 把数组排成最小的数](#45-把数组排成最小的数)
|
||||||
* [46. 把数字翻译成字符串](#46-把数字翻译成字符串)
|
* [46. 把数字翻译成字符串](#46-把数字翻译成字符串)
|
||||||
* [47. 礼物的最大价值](#47-礼物的最大价值)
|
* [47. 礼物的最大价值](#47-礼物的最大价值)
|
||||||
* [解题思路](#解题思路)
|
|
||||||
* [48. 最长不含重复字符的子字符串](#48-最长不含重复字符的子字符串)
|
* [48. 最长不含重复字符的子字符串](#48-最长不含重复字符的子字符串)
|
||||||
|
* [49. 丑数](#49-丑数)
|
||||||
* [50. 第一个只出现一次的字符位置](#50-第一个只出现一次的字符位置)
|
* [50. 第一个只出现一次的字符位置](#50-第一个只出现一次的字符位置)
|
||||||
* [52. 两个链表的第一个公共结点](#52-两个链表的第一个公共结点)
|
* [52. 两个链表的第一个公共结点](#52-两个链表的第一个公共结点)
|
||||||
* [面试中的各项能力](#面试中的各项能力)
|
|
||||||
* [53 数字在排序数组中出现的次数](#53-数字在排序数组中出现的次数)
|
* [53 数字在排序数组中出现的次数](#53-数字在排序数组中出现的次数)
|
||||||
* [54. 二叉搜索树的第 k 个结点](#54-二叉搜索树的第-k-个结点)
|
* [54. 二叉搜索树的第 k 个结点](#54-二叉搜索树的第-k-个结点)
|
||||||
* [55 二叉树的深度](#55-二叉树的深度)
|
* [55 二叉树的深度](#55-二叉树的深度)
|
||||||
|
* [56. 数组中只出现一次的数字](#56-数组中只出现一次的数字)
|
||||||
* [57.1 和为 S 的两个数字](#571-和为-s-的两个数字)
|
* [57.1 和为 S 的两个数字](#571-和为-s-的两个数字)
|
||||||
* [57.2 和为 S 的连续正数序列](#572-和为-s-的连续正数序列)
|
* [57.2 和为 S 的连续正数序列](#572-和为-s-的连续正数序列)
|
||||||
* [58.1 翻转单词顺序列](#581-翻转单词顺序列)
|
* [58.1 翻转单词顺序列](#581-翻转单词顺序列)
|
||||||
|
@ -75,8 +72,8 @@
|
||||||
* [62. 圆圈中最后剩下的数](#62-圆圈中最后剩下的数)
|
* [62. 圆圈中最后剩下的数](#62-圆圈中最后剩下的数)
|
||||||
* [63. 股票的最大利润](#63-股票的最大利润)
|
* [63. 股票的最大利润](#63-股票的最大利润)
|
||||||
* [64. 求 1+2+3+...+n](#64-求-1+2+3++n)
|
* [64. 求 1+2+3+...+n](#64-求-1+2+3++n)
|
||||||
|
* [65. 不用加减乘除做加法](#65-不用加减乘除做加法)
|
||||||
* [66. 构建乘积数组](#66-构建乘积数组)
|
* [66. 构建乘积数组](#66-构建乘积数组)
|
||||||
* [两个面试案例](#两个面试案例)
|
|
||||||
* [67. 把字符串转换成整数](#67-把字符串转换成整数)
|
* [67. 把字符串转换成整数](#67-把字符串转换成整数)
|
||||||
* [68. 树中两个节点的最低公共祖先](#68-树中两个节点的最低公共祖先)
|
* [68. 树中两个节点的最低公共祖先](#68-树中两个节点的最低公共祖先)
|
||||||
<!-- GFM-TOC -->
|
<!-- GFM-TOC -->
|
||||||
|
@ -101,7 +98,7 @@ O(nlog<sub>n</sub>) + O(n<sup>2</sup>),第一个指时间复杂度,第二个
|
||||||
|
|
||||||
# 2. 实现 Singleton
|
# 2. 实现 Singleton
|
||||||
|
|
||||||
[单例模式](https://github.com/CyC2018/Interview-Notebook/blob/master/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F.md#%E5%B7%A5%E5%8E%82%E6%A8%A1%E5%BC%8F)
|
[单例模式](https://github.com/CyC2018/Interview-Notebook/blob/master/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F.md#%E5%8D%95%E4%BB%B6%E6%A8%A1%E5%BC%8F)
|
||||||
|
|
||||||
# 3. 数组中重复的数字
|
# 3. 数组中重复的数字
|
||||||
|
|
||||||
|
@ -523,7 +520,7 @@ public int RectCover(int n) {
|
||||||
|
|
||||||
## 解题思路
|
## 解题思路
|
||||||
|
|
||||||
#### 分治
|
### 分治
|
||||||
|
|
||||||
复杂度:O(log<sub>n</sub>) + O(1),其实空间复杂度不止 O(1),因为分治使用了递归栈,用到了额外的空间,如果对空间有要求就不能用这种方法。
|
复杂度:O(log<sub>n</sub>) + O(1),其实空间复杂度不止 O(1),因为分治使用了递归栈,用到了额外的空间,如果对空间有要求就不能用这种方法。
|
||||||
|
|
||||||
|
@ -540,7 +537,7 @@ private int minNumberInRotateArray(int[] nums, int first, int last) {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 双指针
|
### 双指针
|
||||||
|
|
||||||
复杂度:O(log<sub>n</sub>) + O(1)
|
复杂度:O(log<sub>n</sub>) + O(1)
|
||||||
|
|
||||||
|
@ -662,11 +659,11 @@ private void initDigitSum(int rows, int cols) {
|
||||||
|
|
||||||
## 解题思路
|
## 解题思路
|
||||||
|
|
||||||
#### 1. 动态规划解法
|
### 动态规划解法
|
||||||
|
|
||||||
[分割整数](https://github.com/CyC2018/Interview-Notebook/blob/master/notes/Leetcode%20%E9%A2%98%E8%A7%A3.md#%E5%88%86%E5%89%B2%E6%95%B4%E6%95%B0)
|
[分割整数](https://github.com/CyC2018/Interview-Notebook/blob/master/notes/Leetcode%20%E9%A2%98%E8%A7%A3.md#%E5%88%86%E5%89%B2%E6%95%B4%E6%95%B0)
|
||||||
|
|
||||||
#### 2. 贪心解法
|
### 贪心解法
|
||||||
|
|
||||||
尽可能多得剪长度为 3 的绳子,并且不允许有长度为 1 的绳子出现,如果出现了,就从已经切好长度为 3 的绳子中拿出一段与长度为 1 的绳子重新组合,把它们切成两段长度为 2 的绳子。
|
尽可能多得剪长度为 3 的绳子,并且不允许有长度为 1 的绳子出现,如果出现了,就从已经切好长度为 3 的绳子中拿出一段与长度为 1 的绳子重新组合,把它们切成两段长度为 2 的绳子。
|
||||||
|
|
||||||
|
@ -711,8 +708,6 @@ public int NumberOf1(int n) {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
# 高质量的代码
|
|
||||||
|
|
||||||
# 16. 数值的整数次方
|
# 16. 数值的整数次方
|
||||||
|
|
||||||
## 题目描述
|
## 题目描述
|
||||||
|
@ -1055,8 +1050,6 @@ private boolean isSubtree(TreeNode root1, TreeNode root2) {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
# 解决面试题的思路
|
|
||||||
|
|
||||||
# 27. 二叉树的镜像
|
# 27. 二叉树的镜像
|
||||||
|
|
||||||
## 题目描述
|
## 题目描述
|
||||||
|
@ -1516,8 +1509,6 @@ private void backtracking(char[] chars, boolean[] hasUsed, StringBuffer s) {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
# 优化时间和空间效率
|
|
||||||
|
|
||||||
# 39. 数组中出现次数超过一半的数字
|
# 39. 数组中出现次数超过一半的数字
|
||||||
|
|
||||||
## 解题思路
|
## 解题思路
|
||||||
|
@ -1844,7 +1835,7 @@ public int getTranslationCount(String number) {
|
||||||
|
|
||||||
礼物的最大价值为 1+12+5+7+7+16+5=53。
|
礼物的最大价值为 1+12+5+7+7+16+5=53。
|
||||||
|
|
||||||
# 解题思路
|
## 解题思路
|
||||||
|
|
||||||
应该用动态规划求解,而不是深度优先搜索,深度优先搜索过于复杂,不是最优解。
|
应该用动态规划求解,而不是深度优先搜索,深度优先搜索过于复杂,不是最优解。
|
||||||
|
|
||||||
|
@ -1890,7 +1881,7 @@ public int longestSubStringWithoutDuplication(String str) {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## 49. 丑数
|
# 49. 丑数
|
||||||
|
|
||||||
## 题目描述
|
## 题目描述
|
||||||
|
|
||||||
|
@ -1997,8 +1988,6 @@ public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
# 面试中的各项能力
|
|
||||||
|
|
||||||
# 53 数字在排序数组中出现的次数
|
# 53 数字在排序数组中出现的次数
|
||||||
|
|
||||||
## 题目描述
|
## 题目描述
|
||||||
|
@ -2078,7 +2067,7 @@ public int TreeDepth(TreeNode root) {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## 56. 数组中只出现一次的数字
|
# 56. 数组中只出现一次的数字
|
||||||
|
|
||||||
## 题目描述
|
## 题目描述
|
||||||
|
|
||||||
|
@ -2389,7 +2378,7 @@ public int Sum_Solution(int n) {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## 65. 不用加减乘除做加法
|
# 65. 不用加减乘除做加法
|
||||||
|
|
||||||
a ^ b 表示没有考虑进位的情况下两数的和,(a & b) << 1 就是进位。递归会终止的原因是 (a & b) << 1 最右边会多一个 0,那么继续递归,进位最右边的 0 会慢慢增多,最后进位会变为 0,递归终止。
|
a ^ b 表示没有考虑进位的情况下两数的和,(a & b) << 1 就是进位。递归会终止的原因是 (a & b) << 1 最右边会多一个 0,那么继续递归,进位最右边的 0 会慢慢增多,最后进位会变为 0,递归终止。
|
||||||
|
|
||||||
|
@ -2420,8 +2409,6 @@ public int[] multiply(int[] A) {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
# 两个面试案例
|
|
||||||
|
|
||||||
# 67. 把字符串转换成整数
|
# 67. 把字符串转换成整数
|
||||||
|
|
||||||
```java
|
```java
|
||||||
|
|
Loading…
Reference in New Issue
Block a user