From 8d449f3d9676dd35016f53d6282afd676ed81769 Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Fri, 3 May 2019 18:46:38 +0800 Subject: [PATCH] auto commit --- docs/notes/剑指 Offer 题解 - 10~19.md | 16 ++++++++++------ .../0038204c-4b8a-42a5-921d-080f6674f989.png | Bin 0 -> 9937 bytes .../424f34ab-a9fd-49a6-9969-d76b42251365.png | Bin 0 -> 12068 bytes .../0038204c-4b8a-42a5-921d-080f6674f989.png | Bin 0 -> 9937 bytes .../424f34ab-a9fd-49a6-9969-d76b42251365.png | Bin 0 -> 12068 bytes notes/剑指 Offer 题解 - 10~19.md | 16 ++++++++++------ 6 files changed, 20 insertions(+), 12 deletions(-) create mode 100644 docs/pics/0038204c-4b8a-42a5-921d-080f6674f989.png create mode 100644 docs/pics/424f34ab-a9fd-49a6-9969-d76b42251365.png create mode 100644 notes/pics/0038204c-4b8a-42a5-921d-080f6674f989.png create mode 100644 notes/pics/424f34ab-a9fd-49a6-9969-d76b42251365.png diff --git a/docs/notes/剑指 Offer 题解 - 10~19.md b/docs/notes/剑指 Offer 题解 - 10~19.md index e7d1d732..e4e4ec26 100644 --- a/docs/notes/剑指 Offer 题解 - 10~19.md +++ b/docs/notes/剑指 Offer 题解 - 10~19.md @@ -232,16 +232,20 @@ public int JumpFloorII(int target) { 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 -例如数组 {3, 4, 5, 1, 2} 为 {1, 2, 3, 4, 5} 的一个旋转,该数组的最小值为 1。 +

## 解题思路 -在一个有序数组中查找一个元素可以用二分查找,二分查找也称为折半查找,每次都能将查找区间减半,这种折半特性的算法时间复杂度都为 O(logN)。 +将旋转数组对半分可以得到一个包含最小元素的新旋转数组,以及一个非递减排序的数组。新的旋转数组的数组元素是原数组的一半,从而将问题规模减少了一半,这种折半性质的算法的时间复杂度为 O(logN)(为了方便,这里将 log2N 写为 logN)。 -本题可以修改二分查找算法进行求解: +

-- 当 nums[m] <= nums[h] 的情况下,说明解在 [l, m] 之间,此时令 h = m; -- 否则解在 [m + 1, h] 之间,令 l = m + 1。 +此时问题的关键在于确定对半分得到的两个数组哪一个是旋转数组,哪一个是非递减数组。我们很容易知道非递减数组的第一个元素一定小于等于最后一个元素。 + +通过修改二分查找算法进行求解(l 代表 low,m 代表 mid,h 代表 high): + +- 当 nums[m] <= nums[h] 时,表示 [m, h] 区间内的数组是非递减数组,[l, m] 区间内的数组是旋转数组,此时令 h = m; +- 否则 [m + 1, h] 区间内的数组是旋转数组,令 l = m + 1。 ```java public int minNumberInRotateArray(int[] nums) { @@ -259,7 +263,7 @@ public int minNumberInRotateArray(int[] nums) { } ``` -如果数组元素允许重复的话,那么就会出现一个特殊的情况:nums[l] == nums[m] == nums[h],那么此时无法确定解在哪个区间,需要切换到顺序查找。例如对于数组 {1,1,1,0,1},l、m 和 h 指向的数都为 1,此时无法知道最小数字 0 在哪个区间。 +如果数组元素允许重复,会出现一个特殊的情况:nums[l] == nums[m] == nums[h],此时无法确定解在哪个区间,需要切换到顺序查找。例如对于数组 {1,1,1,0,1},l、m 和 h 指向的数都为 1,此时无法知道最小数字 0 在哪个区间。 ```java public int minNumberInRotateArray(int[] nums) { diff --git a/docs/pics/0038204c-4b8a-42a5-921d-080f6674f989.png b/docs/pics/0038204c-4b8a-42a5-921d-080f6674f989.png new file mode 100644 index 0000000000000000000000000000000000000000..31a2d8d2e54a27faa1c7e701a1d20e80b9236913 GIT binary patch literal 9937 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 literal 0 HcmV?d00001 diff --git a/docs/pics/424f34ab-a9fd-49a6-9969-d76b42251365.png b/docs/pics/424f34ab-a9fd-49a6-9969-d76b42251365.png new file mode 100644 index 0000000000000000000000000000000000000000..d5c1a58d87d2299cb62e80f261447c495d74e129 GIT binary patch literal 12068 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 Spa!0T;;yE?M&+G{;r|8K^@$w- literal 0 HcmV?d00001 diff --git a/notes/pics/0038204c-4b8a-42a5-921d-080f6674f989.png b/notes/pics/0038204c-4b8a-42a5-921d-080f6674f989.png new file mode 100644 index 0000000000000000000000000000000000000000..31a2d8d2e54a27faa1c7e701a1d20e80b9236913 GIT binary patch literal 9937 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 literal 0 HcmV?d00001 diff --git a/notes/pics/424f34ab-a9fd-49a6-9969-d76b42251365.png b/notes/pics/424f34ab-a9fd-49a6-9969-d76b42251365.png new file mode 100644 index 0000000000000000000000000000000000000000..d5c1a58d87d2299cb62e80f261447c495d74e129 GIT binary patch literal 12068 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 Spa!0T;;yE?M&+G{;r|8K^@$w- literal 0 HcmV?d00001 diff --git a/notes/剑指 Offer 题解 - 10~19.md b/notes/剑指 Offer 题解 - 10~19.md index c1ec071a..6902dddd 100644 --- a/notes/剑指 Offer 题解 - 10~19.md +++ b/notes/剑指 Offer 题解 - 10~19.md @@ -232,16 +232,20 @@ public int JumpFloorII(int target) { 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 -例如数组 {3, 4, 5, 1, 2} 为 {1, 2, 3, 4, 5} 的一个旋转,该数组的最小值为 1。 +


## 解题思路 -在一个有序数组中查找一个元素可以用二分查找,二分查找也称为折半查找,每次都能将查找区间减半,这种折半特性的算法时间复杂度都为 O(logN)。 +将旋转数组对半分可以得到一个包含最小元素的新旋转数组,以及一个非递减排序的数组。新的旋转数组的数组元素是原数组的一半,从而将问题规模减少了一半,这种折半性质的算法的时间复杂度为 O(logN)(为了方便,这里将 log2N 写为 logN)。 -本题可以修改二分查找算法进行求解: +

-- 当 nums[m] <= nums[h] 的情况下,说明解在 [l, m] 之间,此时令 h = m; -- 否则解在 [m + 1, h] 之间,令 l = m + 1。 +此时问题的关键在于确定对半分得到的两个数组哪一个是旋转数组,哪一个是非递减数组。我们很容易知道非递减数组的第一个元素一定小于等于最后一个元素。 + +通过修改二分查找算法进行求解(l 代表 low,m 代表 mid,h 代表 high): + +- 当 nums[m] <= nums[h] 时,表示 [m, h] 区间内的数组是非递减数组,[l, m] 区间内的数组是旋转数组,此时令 h = m; +- 否则 [m + 1, h] 区间内的数组是旋转数组,令 l = m + 1。 ```java public int minNumberInRotateArray(int[] nums) { @@ -259,7 +263,7 @@ public int minNumberInRotateArray(int[] nums) { } ``` -如果数组元素允许重复的话,那么就会出现一个特殊的情况:nums[l] == nums[m] == nums[h],那么此时无法确定解在哪个区间,需要切换到顺序查找。例如对于数组 {1,1,1,0,1},l、m 和 h 指向的数都为 1,此时无法知道最小数字 0 在哪个区间。 +如果数组元素允许重复,会出现一个特殊的情况:nums[l] == nums[m] == nums[h],此时无法确定解在哪个区间,需要切换到顺序查找。例如对于数组 {1,1,1,0,1},l、m 和 h 指向的数都为 1,此时无法知道最小数字 0 在哪个区间。 ```java public int minNumberInRotateArray(int[] nums) {