解题思路:一开始以为从nums1开始遍历,选取第1个数字x,然后用x去nums2去找,但是往下不好想了。查看了下提示1豁然开朗。
提示1是:注意,在对两个数组进行排序之后,每个元素之间应该有一对一的对应关系。
总结:以后遇到数组中填充数字的题目,我们要想到是否可以通过学过的方法对数组进行改进。
class Solution {
public int addedInteger(int[] nums1, int[] nums2) {
quickSort(nums1,0,nums1.length-1);
quickSort(nums2,0,nums2.length-1);
int index=nums1[0]-nums2[0];
return -index;
// for(int i=1;i<nums1.length;i++){
// if((nums1[i]-nums2[i])!=index) return
// }
}
private static void quickSort(int[] arr,int i,int j){
int start =i;
int end =j;
if(start > end){
return;
}
int baseNumber = arr[i];
while(start!=end){
while(true){
if(end<= start||arr[end]<baseNumber) break;
end--;
}
while(true){
if(end<= start || arr[start]>baseNumber)break;
start++;
}
int temp =arr[start];
arr[start] =arr[end];
arr[end] =temp;
}
int temp = arr[i];
arr[i] = arr[start];
arr[start] = temp;
//确定6左边的范围,重复刚刚所做的事情
quickSort(arr,i,start - 1);
//确定6右边的范围,重复刚刚所做的事情
quickSort(arr,start + 1,j);
}
}