【LeetCode】初级算法案例+java代码实现(排序和搜索篇)

81 阅读1分钟

文章目录


一、合并两个有序的数组

在这里插入图片描述

public void merge(int[] nums1, int m, int[] nums2, int n) {
    int temp[] = new int[m + n];
    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];
    }
}

二、第一个错误版本

在这里插入图片描述

public int firstBadVersion(int n) {
    int min = 1, max = n;
    while (min < max) {
        int mid = min + (max - min) / 2;
        if (!isBadVersion(mid)){
            min = mid + 1;
        }else{
            max = mid;
        }
    }
    return min;
}