首页 > 其他分享 >[LeetCode Hot 100] LeetCode33. 搜索旋转排序数组

[LeetCode Hot 100] LeetCode33. 搜索旋转排序数组

时间:2023-12-19 20:35:34浏览次数:32  
标签:right target nums int mid Hot 100 LeetCode33 left

题目描述

思路

  • 如果nums[left] <= nums[mid],则[left, mid]有序
  • 如果nums[left] > nums[mid],则[mid,right]有序

方法一:

class Solution {
    public int search(int[] nums, int target) {
        if (nums == null || nums.length == 0) return -1;
        int left = 0, right = nums.length - 1;
        while (left <= right) {
            int mid = left + (right - left) / 2;
            if (target == nums[mid]) return mid;
            if (nums[left] <= nums[mid]) {  // 左边有序
                if (target >= nums[left] && target < nums[mid]) { // target在左边
                    right = mid - 1;
                } else { // target在右边
                    left = mid + 1;
                }
            } else {  // 右边有序
                if (target > nums[mid] && target <= nums[right]) { // target在右边
                    left = mid + 1;
                } else {
                    right = mid - 1;
                }
            }
        }
        return -1;
    }
}

标签:right,target,nums,int,mid,Hot,100,LeetCode33,left
From: https://www.cnblogs.com/keyongkang/p/17914661.html

相关文章

  • [LeetCode Hot 100] LeetCode35. 搜索插入位置
    题目描述思路基础二分搜索模板本质:找到第一个大于等于target的元素的下标注意:该题目不存在重复元素存在一种特殊情况:target>nums的最大值,此时插入的位置正好是left的位置方法一:classSolution{publicintsearchInsert(int[]nums,inttarget){if......
  • [LeetCode Hot 100] LeetCode34.在排序数组中查找元素的第一个和最后一个位置
    题目描述思路:二分查找之寻找左右侧边界两个关键点:1.数组有序;2.时间复杂度O(logn)方法一:classSolution{publicint[]searchRange(int[]nums,inttarget){if(nums.length==0||nums==null){returnnewint[]{-1,-1};}......
  • 记录--一行代码修复100vh bug
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助你知道奇怪的移动视口错误(也称为100vhbug)吗?或者如何以正确的方式创建全屏块?一、100vhbug什么是移动视口错误?你是否曾经在网页上创建过全屏元素?只需添加一行CSS并不难:.my-page{height:100vh}1v......
  • 【2023潇湘夜雨】WIN11_Pro_Canary_26016.1000软件选装纯净版12.19
    【系统简介】=============================================================1.本次更新母盘来自WIN11_Pro_Canary_26016.1000。2.增加部分优化方案,手工精简部分较多,干掉右下角水印。3.OS版本号为26016.1000。精简系统只是为部分用户安装,个别要求高的去MSDN下。4.集成《DrvCeo-2.1......
  • C0328 【1005 C组】模拟测试 斜率 题解
    原题链接:斜率。题意在一个平面直角坐标系中,给定\(n\)个点的横纵坐标,求出哪两个点所构成的连线的斜率最接近\(\frac{P}{Q}\)。数据范围:\(n\le1000000\)。思路显然这是一道数学题,不能直接暴力去找答案。首先我们可以弱化一下题目,求出斜率最接近\(y=0\)即\(x\)轴的两......
  • 同样的程序,有时是gpu正常10%,有时gpu占用率到达或接近100%?提供一个解决方案
    同样的程序,同样的代码,只在不同时间运行,有时是gpu正常10%,有时gpu占用率到达或接近100%?这里提供一个排错的解决方案1、首先打开任务管理器,看看cpu的连续正常运行时间,如果超过了1天,请重启或按shift后关闭电脑再开机,这个方法可以把重复运行的程序的一些积累效应去掉我通过这个方式......
  • 一行代码修复100vh bug | 京东云技术团队
    你知道奇怪的移动视口错误(也称为100vhbug)吗?或者如何以正确的方式创建全屏块?一、100vhbug什么是移动视口错误?你是否曾经在网页上创建过全屏元素?只需添加一行CSS并不难:.my-page{height:100vh}1vh是视口高度的1%,正是我们所需要的。但当我们在移动设备上测试时,就......
  • 五年之后超过10000订阅者
    本周运维咖啡吧公众号的订阅者超过一万,虽然早已不再过多关注粉丝的数量,但真的到了过万这个里程碑节点还是十分高兴,这距离上一个粉丝五千的里程碑已经过去了超过四年,距离写公众号开始已经超过了五年。五年时间,订阅者万人,对于一个公众号的运营者来说无疑是失败的,太长的时间微不足道......
  • 面试常考:C#用两个线程交替打印1-100的五种方法
    面试常考:C#用两个线程交替打印1-100的五种方法翔星有10年+工作经验,高级软件工程师,可以解决各种问题​关注 你经常看TA的内容"C#用两个线程交替打印1-100的五种方法"是.NET工程师面试多线程常考的试题之一,主要考察对C#语法和对多线程的熟悉程......
  • 初中英语优秀范文100篇-031My Daily Life-我的日常生活
    PDF格式公众号回复关键字:SHCZFW031记忆树1Mydailylifeisinterestingandcolorful.翻译我的日常生活有趣且丰富多彩。简化记忆生活句子结构主语:Mydailylife(我的日常生活)谓语:is(是)宾语:interestingandcolorful(有趣且多彩的)这句话的意思是“我的日常生活是有......