力扣_排序和搜索
合并两个有序数组
//设置一个长度为n+m的新数组用于存数组nums1和数组num2的值
//循环比较nums1和nums2中的值,将两者中小的存入在nums中,并且序号加1
//循环直到有个数组的序号已经等于数组长度,那么将还没到的数组剩下元素存入在nums中
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
//设置新数组
int[] temp = new int[m + n];
//用于标识数组nums1和nums2的下标和nums的下标
int index = 0;
int i = 0;
int j = 0;
while (i < m && j < n) {
if (nums1[i] <= nums2[j])
temp[index++] = nums1[i++];
else
temp[index++] = nums2[j++];
}
for (; i < m; ) {
temp[index++] = nums1[i++];
}
for (; j < n; ) {
temp[index++] = nums2[j++];
}
//再把数组temp中的值赋给nums1
for (int k = 0; k < m + n; k++) {
nums1[k] = temp[k];
}
}
}
第一个错误的版本
/* The isBadVersion API is defined in the parent class VersionControl.
boolean isBadVersion(int version); */
//早第一个出错的版本,即找最左边的版本
//可以使用二分法,不断的往左方推移
public class Solution extends VersionControl {
public int firstBadVersion(int n) {
//设初始版本1就是错的
int l = 1;
int r = n;
//二分法
while(l < r){
int mid = l+(r-l)/2;
if(isBadVersion(mid)){
r = mid;
}else{
l = mid+1;
}
}
return l;
}
}

浙公网安备 33010602011771号