算法練習LeetCode初級算法之排序和搜索

  • 合併兩個有序數組

    class Solution { 數組

    public void merge(int[] nums1, int m, int[] nums2, int n) { spa

    System.arraycopy(nums2, 0, nums1, m, n); 遞歸

    Arrays.sort(nums1); io

    } class

    } sort

  • 第一個錯誤的版本

  • 遞歸解法:本身忽然來了靈感寫的,哈哈哈,遞歸真的很神奇!

    /* The isBadVersion API is defined in the parent class VersionControl. margin

    boolean isBadVersion(int version); */ di

 

class Solution extends VersionControl { while

    public int firstBadVersion(int n) { copy

     return helper(0, n);

    }

    private int helper(int l,int r) {

        if (l<r) {

            int m=l+(r-l)/2;

            if (isBadVersion(m)) {

                return helper(l, m);

            }else {

                return helper(m+1, r);

            }

        }

        return l;

    }

}

  • 二分法解法:

    public class Solution extends VersionControl {

    public int firstBadVersion(int n) {

    int l=1;

    int r=n;

    while(l<r){

    int m=l+((r-l)/2);

    if(isBadVersion(m)){

    r=m;

    }else{

    l=m+1;

    }

    }

    return l;

    }

    }

  • 很慢的解法:

    public class Solution extends VersionControl {

    public int firstBadVersion(int n) {

    int i=1;

    while(i<=n){

    if(isBadVersion(i)){

    break;

    }

    i++;

    }

    return i;

    }

    }

相關文章
相關標籤/搜索