diff --git a/notes/剑指 Offer 题解 - 3~9.md b/notes/剑指 Offer 题解 - 3~9.md index 74f00e6c..d0553b47 100644 --- a/notes/剑指 Offer 题解 - 3~9.md +++ b/notes/剑指 Offer 题解 - 3~9.md @@ -58,7 +58,39 @@ private void swap(int[] nums, int i, int j) { nums[j] = t; } ``` - +```java +public class Solution { + // Parameters: + // numbers: an array of integers + // length: the length of array numbers + // duplication: (Output) the duplicated number in the array number,length of duplication array is 1,so using duplication[0] = ? in implementation; + // Here duplication like pointor in C/C++, duplication[0] equal *duplication in C/C++ + // 这里要特别注意~返回任意重复的一个,赋值duplication[0] + // Return value: true if the input is valid, and there are some duplications in the array number + // otherwise false + public boolean duplicate(int[] numbers, int length, int[] duplication) { + if (numbers == null || length <= 0) + return false; + for (int i = 0; i < length; i++) { + while (numbers[i] != i) { + if (numbers[i] == numbers[numbers[i]]) { + duplication[0] = numbers[i]; + return true; + } + int temp=numbers[i]; + numbers[i]=numbers[temp]; + numbers[temp]=temp; + //swap(numbers, i, numbers[i]); + } + } + return false; +} + +private void swap(int[] nums, int i, int j) { + int t = nums[i]; nums[i] = nums[j]; nums[j] = t; +} +} +``` # 4. 二维数组中的查找 [NowCoder](https://www.nowcoder.com/practice/abc3fe2ce8e146608e868a70efebf62e?tpId=13&tqId=11154&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking)