auto commit

This commit is contained in:
CyC2018 2018-03-17 18:19:07 +08:00
parent 99a330cb71
commit 832cf4086e

View File

@ -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