首页 > 其他分享 >33. 搜索旋转排序数组

33. 搜索旋转排序数组

时间:2022-12-11 20:00:55浏览次数:39  
标签:下标 nums 33 mid 旋转 int 数组 排序

整数数组 nums 按升序排列,数组中的值 互不相同 。

在传递给函数之前,nums 在预先未知的某个下标 k0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2] 。

给你 旋转后 的数组 nums 和一个整数 target ,如果 nums 中存在这个目标值 target ,则返回它的下标,否则返回 -1 。

你必须设计一个时间复杂度为 O(log n) 的算法解决此问题。

class Solution {
public:
    int search(vector<int>& a, int x) {
        int l = 0, r = a.size() - 1;
        while (l < r) {
            int mid = l + r + 1 >> 1;
            if (a[mid] >= a[0]) l = mid;
            else r = mid - 1;
        }

        if (x >= a[0]) l = 0;
        else {
            l = r + 1;
            r = a.size() - 1;
        }

        while (l < r) {
            int mid = l + r + 1 >> 1;
            if (a[mid] <= x) l = mid;
            else r = mid - 1;
        }
        if (a[r] == x) return l;
        return -1;
    }
};

  

标签:下标,nums,33,mid,旋转,int,数组,排序
From: https://www.cnblogs.com/leetothemoon/p/16974285.html

相关文章

  • 数组比较
    importjava.util.Scanner;publicclassEext{publicstaticvoidmain(String[]args){double[]arr={1.1,8.4,9.6,7.7};A01array=newA......
  • 贡献排序
    贡献度表格:学号姓名工作占比20201303张奕博18%20201314黄斯阳15%20201319吴向林15%20201321周慧琳22%20201327刘谨铭15%20201329魏......
  • c中的数组名
    //数组名是什么?数组名是首元素的地址//但是有两个例外sizeof(数组名)-数组名表示整个数组-计算的是整个数组的大小单位是字节#include<stdio.h>intmain(){inta......
  • 数组的注意事项
    intmain(){ chararr[]="abcdrf"; chararr1[]="abc";//里面包括abc\0 chararr2[]={'a','b','c'};//里面包括abc intarr3[]={0,1,2,3,4,5,6,7,8,9};......
  • 1827. 最少操作使数组递增
    1827.最少操作使数组递增classSolution{publicintminOperations(int[]nums){intn=nums.length;intres=0;for(inti=1;i......
  • 实验三-电子公文传输系统2-贡献排序
    六个核桃电子公文传输系统团队项目——小组贡献排序杨赛陈子昂陈鑫徐嘉远林梓祺陈俊池20%17%16.5%16%15.5%15%......
  • 每日食词—day033
    generateviawizard通过向导生成viawizard:通过向导via等价于throughtranslationn.翻译、转换、平移、调换fontn.字体、字型subscriptionn. adj.订......
  • 实验三-电子公文传输系统2-贡献排序
    贡献排序学号姓名贡献量(%)20201225张晓平2020201232杨明浩2020201205郭涛1520201209戴骏1520201214于瀛鹏1520201228龙雪江村15......
  • 游戏开发33课 typescript 遍历
    一、for..of方法这是最常用的方法,遍历的值是数组中的value值letsomeArray=[1,"string",false];for(letentryofsomeArray){console.log(entry);//1,"strin......
  • 新手算法第一题----删除排序数组中的重复项
     * @param {number[]} nums * @return {number} */var removeDuplicates = function(nums) {  if(nums == 0 || nums == [])    return 0......