From a2cf6fc9f944a8fa2983f07d7f3e8c452f9bd24d Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Sat, 17 Mar 2018 10:34:17 +0800 Subject: [PATCH] auto commit --- notes/剑指 offer 题解.md | 137 ++++++++++++------ pics/35b0caf8-6f34-49db-93ed-d505e9eb3d99.png | Bin 0 -> 32768 bytes 2 files changed, 94 insertions(+), 43 deletions(-) create mode 100644 pics/35b0caf8-6f34-49db-93ed-d505e9eb3d99.png diff --git a/notes/剑指 offer 题解.md b/notes/剑指 offer 题解.md index 0fb7b054..6173bec4 100644 --- a/notes/剑指 offer 题解.md +++ b/notes/剑指 offer 题解.md @@ -1,5 +1,6 @@ -* [第二章 面试需要的基础知识](#第二章-面试需要的基础知识) +* [前言](#前言) +* [面试需要的基础知识](#面试需要的基础知识) * [2. 实现 Singleton](#2-实现-singleton) * [3. 数组中重复的数字](#3-数组中重复的数字) * [4. 二维数组中的查找](#4-二维数组中的查找) @@ -17,7 +18,7 @@ * [13. 机器人的运动范围](#13-机器人的运动范围) * [14. 剪绳子](#14-剪绳子) * [15. 二进制中 1 的个数](#15-二进制中-1-的个数) -* [第三章 高质量的代码](#第三章-高质量的代码) +* [高质量的代码](#高质量的代码) * [16. 数值的整数次方](#16-数值的整数次方) * [17. 打印从 1 到最大的 n 位数](#17-打印从-1-到最大的-n-位数) * [18.1 在 O(1) 时间内删除链表节点](#181-在-o1-时间内删除链表节点) @@ -30,7 +31,7 @@ * [24. 反转链表](#24-反转链表) * [25. 合并两个排序的链表](#25-合并两个排序的链表) * [26. 树的子结构](#26-树的子结构) -* [第四章 解决面试题的思路](#第四章-解决面试题的思路) +* [解决面试题的思路](#解决面试题的思路) * [27. 二叉树的镜像](#27-二叉树的镜像) * [28.1 对称的二叉树](#281-对称的二叉树) * [28.2 平衡二叉树](#282-平衡二叉树) @@ -46,7 +47,7 @@ * [36. 二叉搜索树与双向链表](#36-二叉搜索树与双向链表) * [37. 序列化二叉树](#37-序列化二叉树) * [38. 字符串的排列](#38-字符串的排列) -* [第五章 优化时间和空间效率](#第五章-优化时间和空间效率) +* [优化时间和空间效率](#优化时间和空间效率) * [39. 数组中出现次数超过一半的数字](#39-数组中出现次数超过一半的数字) * [40. 最小的 K 个数](#40-最小的-k-个数) * [41.1 数据流中的中位数](#411-数据流中的中位数) @@ -62,7 +63,7 @@ * [50. 第一个只出现一次的字符位置](#50-第一个只出现一次的字符位置) * [51. 数组中的逆序对](#51-数组中的逆序对) * [52. 两个链表的第一个公共结点](#52-两个链表的第一个公共结点) -* [第六章 面试中的各项能力](#第六章-面试中的各项能力) +* [面试中的各项能力](#面试中的各项能力) * [53 数字在排序数组中出现的次数](#53-数字在排序数组中出现的次数) * [54. 二叉搜索树的第 k 个结点](#54-二叉搜索树的第-k-个结点) * [55 二叉树的深度](#55-二叉树的深度) @@ -79,13 +80,29 @@ * [64. 求 1+2+3+...+n](#64-求-1+2+3++n) * [65. 不用加减乘除做加法](#65-不用加减乘除做加法) * [66. 构建乘积数组](#66-构建乘积数组) -* [第七章 两个面试案例](#第七章-两个面试案例) +* [两个面试案例](#两个面试案例) * [67. 把字符串转换成整数](#67-把字符串转换成整数) * [68. 树中两个节点的最低公共祖先](#68-树中两个节点的最低公共祖先) -# 第二章 面试需要的基础知识 +# 前言 + +**变量命名规范** + +- nums 表示数组,matrix 表示矩阵; +- n 表示数组长度、字符串长度、树节点个数,以及其它具有一维性质的数据结构的元素个数; +- m, n 表示矩阵的行数和列数; +- first, last 表示闭区间:[first, last]; +- begin, end 表示左闭右开区间:[begin, end); +- l, h 表示二分查找的闭区间:[l, h]; +- ret 表示和结果相关的变量; + +**复杂度简写说明** + +O(nlogn) + O(n2),第一个指时间复杂度,第二个指空间复杂度。 + +# 面试需要的基础知识 ## 2. 实现 Singleton @@ -114,6 +131,8 @@ position-2 : (0,1,1,3,2,5) // nums[i] == nums[nums[i]], exit 遍历到位置 2 时,该位置上的数为 1,但是第 1 个位置上已经有一个 1 的值了,因此可以知道 1 重复。 +复杂度:O(n) + O(1) + ```java public boolean duplicate(int[] nums, int length, int[] duplication) { if (nums == null || length <= 0) return false; @@ -141,26 +160,34 @@ private void swap(int[] nums, int i, int j) { 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 ```html +Consider the following matrix: [ - [ 1, 5, 9], - [10, 11, 13], - [12, 13, 15] + [1, 4, 7, 11, 15], + [2, 5, 8, 12, 19], + [3, 6, 9, 16, 22], + [10, 13, 14, 17, 24], + [18, 21, 23, 26, 30] ] + +Given target = 5, return true. +Given target = 20, return false. ``` **解题思路** 从右上角开始查找。因为矩阵中的一个数,它左边的数都比它来的小,下边的数都比它来的大。因此,从右上角开始查找,就可以根据 target 和当前元素的大小关系来改变行和列的下标,从而缩小查找区间。 +复杂度:O(m + n) + O(1) + ```java -public boolean Find(int target, int [][] array) { - if (array == null || array.length == 0 || array[0].length == 0) return false; - int m = array.length, n = array[0].length; - int row = 0, col = n - 1; - while (row < m && col >= 0) { - if (target == array[row][col]) return true; - else if (target < array[row][col]) col--; - else row++; +public boolean Find(int target, int[][] matrix) { + if (matrix == null || matrix.length == 0 || matrix[0].length == 0) return false; + int m = matrix.length, n = matrix[0].length; + int r = 0, c = n - 1; // 从右上角开始 + while (r <= m - 1 && c >= 0) { + if (target == matrix[r][c]) return true; + else if (target > matrix[r][c]) r++; + else c--; } return false; } @@ -172,33 +199,37 @@ public boolean Find(int target, int [][] array) { 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为 We Are Happy. 则经过替换之后的字符串为 We%20Are%20Happy。 -**题目要求** - -以 O(1) 的空间复杂度和 O(n) 的时间复杂度来求解。 - **解题思路** -从后向前改变字符串。 +现在字符串尾部填充任意字符,使得字符串的长度等于将字符串替换之后的长度。因为一个空格要替换成三个字符(%20),因此当遍历到一个空格时,需要在尾部填充两个任意字符。 + +令 P1 指向字符串原来的末尾位置,P2 指向字符串现在的末尾位置。P1 从后向前遍历,当遍历到一个空格时,就需要令 P2 指向的位置填充 02%(注意是逆序的),否则就填充上 P1 指向字符的值。 + +从后向前遍历时为了在改变 P2 所指向的内容时,不会影响到 P1 遍历原来字符串的内容。 + +复杂度:O(n) + O(1) + +

```java public String replaceSpace(StringBuffer str) { - int n = str.length(); - for (int i = 0; i < n; i++) { + int oldLen = str.length(); + for (int i = 0; i < oldLen; i++) { if (str.charAt(i) == ' ') { - str.append(" "); // 尾部填充两个 + str.append(" "); } } - int idxOfOriginal = n - 1; + int idxOfOld = oldLen - 1; int idxOfNew = str.length() - 1; - while (idxOfOriginal >= 0 && idxOfNew > idxOfOriginal) { - if (str.charAt(idxOfOriginal) == ' ') { + while (idxOfOld >= 0 && idxOfNew > idxOfOld) { + char c = str.charAt(idxOfOld--); + if (c == ' ') { str.setCharAt(idxOfNew--, '0'); str.setCharAt(idxOfNew--, '2'); str.setCharAt(idxOfNew--, '%'); } else { - str.setCharAt(idxOfNew--, str.charAt(idxOfOriginal)); + str.setCharAt(idxOfNew--, c); } - idxOfOriginal--; } return str.toString(); } @@ -262,14 +293,15 @@ public ArrayList printListFromTailToHead(ListNode listNode) { ```java public ArrayList printListFromTailToHead(ListNode listNode) { - ListNode head = new ListNode(-1); // 头结点 - ListNode cur = listNode; - while (cur != null) { - ListNode next = cur.next; - cur.next = head.next; - head.next = cur; - cur = next; + // 头插法构建逆序链表 + ListNode head = new ListNode(-1); + while (listNode != null) { + ListNode memo = listNode.next; + listNode.next = head.next; + head.next = listNode; + listNode = memo; } + // 构建 ArrayList ArrayList ret = new ArrayList<>(); head = head.next; while (head != null) { @@ -286,6 +318,25 @@ public ArrayList printListFromTailToHead(ListNode listNode) { 根据二叉树的前序遍历和中序遍历的结果,重建出该二叉树。 +```html +For example, given + +preorder = [3,9,20,15,7] +inorder = [9,3,15,20,7] + +Return the following binary tree: + + 3 + / \ + 9 20 + / \ + 15 7 +``` + +**解题思路** + +中序遍历的第一个值为树根节点的值,使用这个值将前序遍历结果分成两部分,左部分为树的左子树前序遍历结果,右部分为树的右子树前序遍历的结果。 + ```java public TreeNode reConstructBinaryTree(int[] pre, int[] in) { return reConstructBinaryTree(pre, 0, pre.length - 1, in, 0, in.length - 1); @@ -614,7 +665,7 @@ public int NumberOf1(int n) { } ``` -# 第三章 高质量的代码 +# 高质量的代码 ## 16. 数值的整数次方 @@ -958,7 +1009,7 @@ private boolean isSubtree(TreeNode root1, TreeNode root2) { } ``` -# 第四章 解决面试题的思路 +# 解决面试题的思路 ## 27. 二叉树的镜像 @@ -1419,7 +1470,7 @@ private void backtracking(char[] chars, boolean[] hasUsed, StringBuffer s) { } ``` -# 第五章 优化时间和空间效率 +# 优化时间和空间效率 ## 39. 数组中出现次数超过一半的数字 @@ -1900,7 +1951,7 @@ public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) { } ``` -# 第六章 面试中的各项能力 +# 面试中的各项能力 ## 53 数字在排序数组中出现的次数 @@ -2323,7 +2374,7 @@ public int[] multiply(int[] A) { } ``` -# 第七章 两个面试案例 +# 两个面试案例 ## 67. 把字符串转换成整数 diff --git a/pics/35b0caf8-6f34-49db-93ed-d505e9eb3d99.png b/pics/35b0caf8-6f34-49db-93ed-d505e9eb3d99.png new file mode 100644 index 0000000000000000000000000000000000000000..71505568370acd19e306d4e042bdf4f09fb5820a GIT binary patch literal 32768 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 literal 0 HcmV?d00001