LeetCode题目-33

首页 编程分享 LEET_CODE 正文

leetCode 转载 编程分享 2021-12-12 01:56:31

简介 LeetCode题目-33


✏题目描述

一个有序数组在不确定的位置进行了旋转,让我们 来求旋转后给定值在当前数组的下标位置,如果没有返回-1.

✏题目实例


✏题目分析

这道题因为本身的数组是有序的,只是在哪个点上发生了旋转的操作,这就造成了数组一半是有序的,我们取数组的中间数做判断,如果中间数小于数组的右半边,说明中间到右半边这一块是有序的,否则左半边就是有序的,然后根据给定值以及确定的半边有序区域的首尾的位置,继续缩小搜索的位置。


✏最终实现代码

    /**
        * @param Integer[] $nums
        * @param Integer $target
        * @return Integer
        */
       function search($nums, $target) {
           $l=0;
           $r=count($nums)-1;
          while($l<=$r){
              $middle=$l+(($r-$l)>>1);
              if($nums[$middle]===$target) return $middle;
              else if($nums[$middle]<$nums[$r]){
                  if($nums[$middle]<$target && $nums[$r]>=$target) $l=$middle+1;
                  else $r=$middle-1;
              }else{
                  if($nums[$l]<=$target && $nums[$middle]>$target) $r=$middle-1;
                  else $l=$middle+1;
              }
          }
           return -1;
       }


转载链接:https://leetcode.cn/


Tags:


本篇评论 —— 揽流光,涤眉霜,清露烈酒一口话苍茫。


    声明:参照站内规则,不文明言论将会删除,谢谢合作。


      最新评论




ABOUT ME

Blogger:袅袅牧童 | Arkin

Ido:PHP攻城狮

WeChat:nnmutong

Email:nnmutong@icloud.com

标签云