二分查找

思路

  • 二分查找的變形,主要的難點在於不僅要找到目標元素,並且要找到下標最小的。可以按照二分查找找到等於目標元素的下標,然後往前遍歷,直到找到最小的下標。
  • 這裏需要注意的是:當找到0下標的元素時候,不能往前面迭代了,因爲會導致數組越界

代碼

    public static int binarySearch(int[] nums, int target) {
        int begin = 0;
        int end = nums.length - 1;
        int medium = 0;
        while (begin <= end) {
            medium = (begin + end) / 2;
            if (nums[medium] > target) {
                end = medium - 1;
            } else if (nums[medium] < target) {
                begin = medium + 1;
            } else {

                while (medium > 0 && nums[--medium] == target); 
                if (medium == 0){
                    return medium;
                }else {
                    return ++medium;
                }   
            }
        }
        return -1;
    }
發佈了76 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章