1. 程式人生 > 其它 >在排序陣列中查詢元素的第一個和最後一個位置 二分法+遞迴

在排序陣列中查詢元素的第一個和最後一個位置 二分法+遞迴

題目:

 給定一個按照升序排列的整數陣列nums,和一個目標值target。找出給定目標值在陣列中的開始位置和結束位置。

 如果陣列中不存在目標值target,返回[-1, -1]

思路:

 1 暴力遍歷 從前往後 第一個 從後往前第一個

 2 二分法 + 遞迴


(一) 程式碼 二分法+遞迴

class Solution {
    int left =  Integer.MAX_VALUE;
    int right = Integer.MIN_VALUE;
    public int[] searchRange(int[] nums, int target) {
        
if(nums.length == 0){ return new int[]{-1,-1}; } searchIndex(nums,target,0,nums.length - 1); if(left == Integer.MAX_VALUE){ left = -1; } if(right == Integer.MIN_VALUE){ right = -1; } return new int[]{left,right}; }
public void searchIndex(int[] nums,int target,int start,int end){ //求mid int mid = (start + end) / 2; //遞迴出口 if(start > end){ return; } //找到目標數,更新 left and right if(nums[mid] == target){ //若left 小於 mid if(left > mid){ left
= mid; } if(right < mid){ right = mid; } } //左陣列 if(target <= nums[mid]){ searchIndex(nums,target,start,mid- 1); } //右陣列 if(target >= nums[mid]){ searchIndex(nums,target,mid + 1,end); } } }

    反覆在理解下, 就是背

        

              背完在理解