LeetCode 34.ソート配列で要素の最初の位置と最後の位置を検索


  • テーマ:34.ソート配列で要素を検索する最初の位置と最後の位置には、昇順に配列された整数配列numsと、ターゲット値targetが与えられます.配列内の所定のターゲット値の開始位置と終了位置を特定します.あなたのアルゴリズムの時間複雑度はO(log n)レベルでなければなりません.配列にターゲット値が存在しない場合は、[-1,-1]を返します.
  • 例1:入力:nums=[5,7,7,8,8,10],target=8出力:[3,4]
  • 例2:入力:nums=[5,7,7,8,8,10],target=6出力:[-1,-1]
  • 考え方:コードの注釈を参照してください
  • public int[] searchRange2(int[] nums, int target){
            int s=find(nums,target);
            if(s==nums.length||nums[s]!=target){
                return new int[]{-1,-1};
            }
    
            int e=find(nums,target+1)-1;
            if(e==nums.length||nums[e]!=target){
                return new int[]{-1,-1};
            }
            return new int[]{s,e};
        }
    
        /*
        *       
        *             , target            ,     target     ,      ()target-1)       
        *       ,        ~
        * */
        private int find(int[] nums, int target){
            int s=0;
            int e=nums.length;//       nums.length-1 ,      ,        ~
            while (s=target){
                    e=middle;
                }else{
                    s=middle+1;
                }
            }
            return s;
        }