From 6c6bad677c9f9549a48dda9c0a2b243dfd419bea Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Wed, 4 Nov 2020 01:20:57 +0800 Subject: [PATCH] auto commit --- .../21. 调整数组顺序使奇数位于偶数前面.md | 6 ++++-- docs/notes/29. 顺时针打印矩阵.md | 18 +++++++++++++++--- docs/notes/3. 数组中重复的数字.md | 2 +- docs/notes/4. 二维数组中的查找.md | 2 +- docs/notes/剑指 Offer 题解 - 目录.md | 2 +- docs/notes/剑指 Offer 题解 - 目录2.md | 2 +- notes/21. 调整数组顺序使奇数位于偶数前面.md | 6 ++++-- notes/29. 顺时针打印矩阵.md | 18 +++++++++++++++--- notes/3. 数组中重复的数字.md | 2 +- notes/4. 二维数组中的查找.md | 2 +- notes/pics/image-20201104010349296.png | Bin 0 -> 16482 bytes notes/pics/image-20201104010609223.png | Bin 0 -> 13952 bytes notes/剑指 Offer 题解 - 目录.md | 2 +- notes/剑指 Offer 题解 - 目录2.md | 2 +- 14 files changed, 46 insertions(+), 18 deletions(-) create mode 100644 notes/pics/image-20201104010349296.png create mode 100644 notes/pics/image-20201104010609223.png diff --git a/docs/notes/21. 调整数组顺序使奇数位于偶数前面.md b/docs/notes/21. 调整数组顺序使奇数位于偶数前面.md index 61f2b31d..2c965dab 100644 --- a/docs/notes/21. 调整数组顺序使奇数位于偶数前面.md +++ b/docs/notes/21. 调整数组顺序使奇数位于偶数前面.md @@ -1,10 +1,12 @@ # 21. 调整数组顺序使奇数位于偶数前面 -[NowCoder](https://www.nowcoder.com/practice/beb5aa231adc45b2a5dcc5b62c93f593?tpId=13&tqId=11166&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking&from=cyc_github) +## 题目链接 + +[牛客网](https://www.nowcoder.com/practice/beb5aa231adc45b2a5dcc5b62c93f593?tpId=13&tqId=11166&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking&from=cyc_github) ## 题目描述 -需要保证奇数和奇数,偶数和偶数之间的相对位置不变,这和书本不太一样。 +需要保证奇数和奇数,偶数和偶数之间的相对位置不变,这和书本不太一样。例如对于 [1,2,3,4,5],调整后得到 [1,3,5,2,4],而不能是 {5,1,3,4,2} 这种相对位置改变的结果。

diff --git a/docs/notes/29. 顺时针打印矩阵.md b/docs/notes/29. 顺时针打印矩阵.md index 1d5435d8..ba9a3bdb 100644 --- a/docs/notes/29. 顺时针打印矩阵.md +++ b/docs/notes/29. 顺时针打印矩阵.md @@ -1,28 +1,40 @@ # 29. 顺时针打印矩阵 -[NowCoder](https://www.nowcoder.com/practice/9b4c81a02cd34f76be2659fa0d54342a?tpId=13&tqId=11172&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking&from=cyc_github) +## 题目链接 + +[牛客网](https://www.nowcoder.com/practice/9b4c81a02cd34f76be2659fa0d54342a?tpId=13&tqId=11172&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking&from=cyc_github) ## 题目描述 -下图的矩阵顺时针打印结果为:1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10 +按顺时针的方向,从外到里打印矩阵的值。下图的矩阵打印结果为:1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10 + +

+ -

## 解题思路 +一层一层从外到里打印,观察可知每一层打印都有相同的处理步骤,唯一不同的是上下左右的边界不同了。因此使用四个变量 r1, r2, c1, c2 分别存储上下左右边界值,从而定义当前最外层。打印当前最外层的顺序:从左到右打印最上一行->从上到下打印最右一行->从右到左打印最下一行->从下到上打印最左一行。应当注意只有在 r1 != r2 时才打印最下一行,也就是在当前最外层的行数大于 1 时才打印最下一行,这是因为当前最外层只有一行时,继续打印最下一行,会导致重复打印。打印最左一行也要做同样处理。 + +

+ ```java public ArrayList printMatrix(int[][] matrix) { ArrayList ret = new ArrayList<>(); int r1 = 0, r2 = matrix.length - 1, c1 = 0, c2 = matrix[0].length - 1; while (r1 <= r2 && c1 <= c2) { + // 上 for (int i = c1; i <= c2; i++) ret.add(matrix[r1][i]); + // 右 for (int i = r1 + 1; i <= r2; i++) ret.add(matrix[i][c2]); if (r1 != r2) + // 下 for (int i = c2 - 1; i >= c1; i--) ret.add(matrix[r2][i]); if (c1 != c2) + // 左 for (int i = r2 - 1; i > r1; i--) ret.add(matrix[i][c1]); r1++; r2--; c1++; c2--; diff --git a/docs/notes/3. 数组中重复的数字.md b/docs/notes/3. 数组中重复的数字.md index d249e72b..aec6d1d9 100644 --- a/docs/notes/3. 数组中重复的数字.md +++ b/docs/notes/3. 数组中重复的数字.md @@ -20,7 +20,7 @@ Output: 要求时间复杂度 O(N),空间复杂度 O(1)。因此不能使用排序的方法,也不能使用额外的标记数组。 -对于这种数组元素在 [0, n-1] 范围内的问题,可以将值为 i 的元素调整到第 i 个位置上进行求解。本题要求找出重复的数字,因此在调整过程中,如果第 i 位置上已经有一个值为 i 的元素,就可以知道 i 值重复。 +对于这种数组元素在 [0, n-1] 范围内的问题,可以将值为 i 的元素调整到第 i 个位置上进行求解。在调整过程中,如果第 i 位置上已经有一个值为 i 的元素,就可以知道 i 值重复。 以 (2, 3, 1, 0, 2, 5) 为例,遍历到位置 4 时,该位置上的数为 2,但是第 2 个位置上已经有一个 2 的值了,因此可以知道 2 重复: diff --git a/docs/notes/4. 二维数组中的查找.md b/docs/notes/4. 二维数组中的查找.md index ff28bd87..a8887f62 100644 --- a/docs/notes/4. 二维数组中的查找.md +++ b/docs/notes/4. 二维数组中的查找.md @@ -26,7 +26,7 @@ Given target = 20, return false. 要求时间复杂度 O(M + N),空间复杂度 O(1)。其中 M 为行数,N 为 列数。 -该二维数组中的一个数,小于它的数一定在其左边,大于它的数一定在其下边。因此,从右上角开始查找,就可以根据 target 和当前元素的大小关系来缩小查找区间,当前元素的查找区间为左下角的所有元素。 +该二维数组中的一个数,小于它的数一定在其左边,大于它的数一定在其下边。因此,从右上角开始查找,就可以根据 target 和当前元素的大小关系来快速地缩小查找区间,每次减少一行或者一列的元素。当前元素的查找区间为左下角的所有元素。

diff --git a/docs/notes/剑指 Offer 题解 - 目录.md b/docs/notes/剑指 Offer 题解 - 目录.md index 5e0fc8f2..83cf0926 100644 --- a/docs/notes/剑指 Offer 题解 - 目录.md +++ b/docs/notes/剑指 Offer 题解 - 目录.md @@ -10,7 +10,6 @@ - [3. 数组中重复的数字](3.%20数组中重复的数字.md) - [4. 二维数组中的查找](4.%20二维数组中的查找.md) - [5. 替换空格](5.%20替换空格.md) -- [21. 调整数组顺序使奇数位于偶数前面](21.%20调整数组顺序使奇数位于偶数前面.md) - [29. 顺时针打印矩阵](29.%20顺时针打印矩阵.md) - [50. 第一个只出现一次的字符位置](50.%20第一个只出现一次的字符位置.md) @@ -84,6 +83,7 @@ # 排序 +- [21. 调整数组顺序使奇数位于偶数前面](21.%20调整数组顺序使奇数位于偶数前面.md) - [45. 把数组排成最小的数](45.%20把数组排成最小的数.md) - [51. 数组中的逆序对](51.%20数组中的逆序对.md) diff --git a/docs/notes/剑指 Offer 题解 - 目录2.md b/docs/notes/剑指 Offer 题解 - 目录2.md index 61d49e31..c3bd0656 100644 --- a/docs/notes/剑指 Offer 题解 - 目录2.md +++ b/docs/notes/剑指 Offer 题解 - 目录2.md @@ -10,7 +10,6 @@ - [3. 数组中重复的数字](notes/3.%20数组中重复的数字.md) - [4. 二维数组中的查找](notes/4.%20二维数组中的查找.md) - [5. 替换空格](notes/5.%20替换空格.md) -- [21. 调整数组顺序使奇数位于偶数前面](notes/21.%20调整数组顺序使奇数位于偶数前面.md) - [29. 顺时针打印矩阵](notes/29.%20顺时针打印矩阵.md) - [50. 第一个只出现一次的字符位置](notes/50.%20第一个只出现一次的字符位置.md) @@ -85,6 +84,7 @@ # 排序 +- [21. 调整数组顺序使奇数位于偶数前面](notes/21.%20调整数组顺序使奇数位于偶数前面.md) - [45. 把数组排成最小的数](notes/45.%20把数组排成最小的数.md) - [51. 数组中的逆序对](notes/51.%20数组中的逆序对.md) diff --git a/notes/21. 调整数组顺序使奇数位于偶数前面.md b/notes/21. 调整数组顺序使奇数位于偶数前面.md index 61f2b31d..2c965dab 100644 --- a/notes/21. 调整数组顺序使奇数位于偶数前面.md +++ b/notes/21. 调整数组顺序使奇数位于偶数前面.md @@ -1,10 +1,12 @@ # 21. 调整数组顺序使奇数位于偶数前面 -[NowCoder](https://www.nowcoder.com/practice/beb5aa231adc45b2a5dcc5b62c93f593?tpId=13&tqId=11166&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking&from=cyc_github) +## 题目链接 + +[牛客网](https://www.nowcoder.com/practice/beb5aa231adc45b2a5dcc5b62c93f593?tpId=13&tqId=11166&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking&from=cyc_github) ## 题目描述 -需要保证奇数和奇数,偶数和偶数之间的相对位置不变,这和书本不太一样。 +需要保证奇数和奇数,偶数和偶数之间的相对位置不变,这和书本不太一样。例如对于 [1,2,3,4,5],调整后得到 [1,3,5,2,4],而不能是 {5,1,3,4,2} 这种相对位置改变的结果。

diff --git a/notes/29. 顺时针打印矩阵.md b/notes/29. 顺时针打印矩阵.md index 1d5435d8..ba9a3bdb 100644 --- a/notes/29. 顺时针打印矩阵.md +++ b/notes/29. 顺时针打印矩阵.md @@ -1,28 +1,40 @@ # 29. 顺时针打印矩阵 -[NowCoder](https://www.nowcoder.com/practice/9b4c81a02cd34f76be2659fa0d54342a?tpId=13&tqId=11172&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking&from=cyc_github) +## 题目链接 + +[牛客网](https://www.nowcoder.com/practice/9b4c81a02cd34f76be2659fa0d54342a?tpId=13&tqId=11172&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking&from=cyc_github) ## 题目描述 -下图的矩阵顺时针打印结果为:1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10 +按顺时针的方向,从外到里打印矩阵的值。下图的矩阵打印结果为:1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10 + +

+ -

## 解题思路 +一层一层从外到里打印,观察可知每一层打印都有相同的处理步骤,唯一不同的是上下左右的边界不同了。因此使用四个变量 r1, r2, c1, c2 分别存储上下左右边界值,从而定义当前最外层。打印当前最外层的顺序:从左到右打印最上一行->从上到下打印最右一行->从右到左打印最下一行->从下到上打印最左一行。应当注意只有在 r1 != r2 时才打印最下一行,也就是在当前最外层的行数大于 1 时才打印最下一行,这是因为当前最外层只有一行时,继续打印最下一行,会导致重复打印。打印最左一行也要做同样处理。 + +

+ ```java public ArrayList printMatrix(int[][] matrix) { ArrayList ret = new ArrayList<>(); int r1 = 0, r2 = matrix.length - 1, c1 = 0, c2 = matrix[0].length - 1; while (r1 <= r2 && c1 <= c2) { + // 上 for (int i = c1; i <= c2; i++) ret.add(matrix[r1][i]); + // 右 for (int i = r1 + 1; i <= r2; i++) ret.add(matrix[i][c2]); if (r1 != r2) + // 下 for (int i = c2 - 1; i >= c1; i--) ret.add(matrix[r2][i]); if (c1 != c2) + // 左 for (int i = r2 - 1; i > r1; i--) ret.add(matrix[i][c1]); r1++; r2--; c1++; c2--; diff --git a/notes/3. 数组中重复的数字.md b/notes/3. 数组中重复的数字.md index d249e72b..aec6d1d9 100644 --- a/notes/3. 数组中重复的数字.md +++ b/notes/3. 数组中重复的数字.md @@ -20,7 +20,7 @@ Output: 要求时间复杂度 O(N),空间复杂度 O(1)。因此不能使用排序的方法,也不能使用额外的标记数组。 -对于这种数组元素在 [0, n-1] 范围内的问题,可以将值为 i 的元素调整到第 i 个位置上进行求解。本题要求找出重复的数字,因此在调整过程中,如果第 i 位置上已经有一个值为 i 的元素,就可以知道 i 值重复。 +对于这种数组元素在 [0, n-1] 范围内的问题,可以将值为 i 的元素调整到第 i 个位置上进行求解。在调整过程中,如果第 i 位置上已经有一个值为 i 的元素,就可以知道 i 值重复。 以 (2, 3, 1, 0, 2, 5) 为例,遍历到位置 4 时,该位置上的数为 2,但是第 2 个位置上已经有一个 2 的值了,因此可以知道 2 重复: diff --git a/notes/4. 二维数组中的查找.md b/notes/4. 二维数组中的查找.md index ff28bd87..a8887f62 100644 --- a/notes/4. 二维数组中的查找.md +++ b/notes/4. 二维数组中的查找.md @@ -26,7 +26,7 @@ Given target = 20, return false. 要求时间复杂度 O(M + N),空间复杂度 O(1)。其中 M 为行数,N 为 列数。 -该二维数组中的一个数,小于它的数一定在其左边,大于它的数一定在其下边。因此,从右上角开始查找,就可以根据 target 和当前元素的大小关系来缩小查找区间,当前元素的查找区间为左下角的所有元素。 +该二维数组中的一个数,小于它的数一定在其左边,大于它的数一定在其下边。因此,从右上角开始查找,就可以根据 target 和当前元素的大小关系来快速地缩小查找区间,每次减少一行或者一列的元素。当前元素的查找区间为左下角的所有元素。

diff --git a/notes/pics/image-20201104010349296.png b/notes/pics/image-20201104010349296.png new file mode 100644 index 0000000000000000000000000000000000000000..1c623466402f9529d0fc361f5591ea8d8b17d788 GIT binary patch literal 16482 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 literal 0 HcmV?d00001 diff --git a/notes/剑指 Offer 题解 - 目录.md b/notes/剑指 Offer 题解 - 目录.md index 5e0fc8f2..83cf0926 100644 --- a/notes/剑指 Offer 题解 - 目录.md +++ b/notes/剑指 Offer 题解 - 目录.md @@ -10,7 +10,6 @@ - [3. 数组中重复的数字](3.%20数组中重复的数字.md) - [4. 二维数组中的查找](4.%20二维数组中的查找.md) - [5. 替换空格](5.%20替换空格.md) -- [21. 调整数组顺序使奇数位于偶数前面](21.%20调整数组顺序使奇数位于偶数前面.md) - [29. 顺时针打印矩阵](29.%20顺时针打印矩阵.md) - [50. 第一个只出现一次的字符位置](50.%20第一个只出现一次的字符位置.md) @@ -84,6 +83,7 @@ # 排序 +- [21. 调整数组顺序使奇数位于偶数前面](21.%20调整数组顺序使奇数位于偶数前面.md) - [45. 把数组排成最小的数](45.%20把数组排成最小的数.md) - [51. 数组中的逆序对](51.%20数组中的逆序对.md) diff --git a/notes/剑指 Offer 题解 - 目录2.md b/notes/剑指 Offer 题解 - 目录2.md index 61d49e31..c3bd0656 100644 --- a/notes/剑指 Offer 题解 - 目录2.md +++ b/notes/剑指 Offer 题解 - 目录2.md @@ -10,7 +10,6 @@ - [3. 数组中重复的数字](notes/3.%20数组中重复的数字.md) - [4. 二维数组中的查找](notes/4.%20二维数组中的查找.md) - [5. 替换空格](notes/5.%20替换空格.md) -- [21. 调整数组顺序使奇数位于偶数前面](notes/21.%20调整数组顺序使奇数位于偶数前面.md) - [29. 顺时针打印矩阵](notes/29.%20顺时针打印矩阵.md) - [50. 第一个只出现一次的字符位置](notes/50.%20第一个只出现一次的字符位置.md) @@ -85,6 +84,7 @@ # 排序 +- [21. 调整数组顺序使奇数位于偶数前面](notes/21.%20调整数组顺序使奇数位于偶数前面.md) - [45. 把数组排成最小的数](notes/45.%20把数组排成最小的数.md) - [51. 数组中的逆序对](notes/51.%20数组中的逆序对.md)