首页 > 其他分享 >#yyds干货盘点# LeetCode面试题:搜索旋转排序数组 II

#yyds干货盘点# LeetCode面试题:搜索旋转排序数组 II

时间:2023-04-19 22:34:22浏览次数:29  
标签:yyds 面试题 false target nums int 示例 II 数组

1.简述:

已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同。

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

给你 旋转后 的数组 nums 和一个整数 target ,请你编写一个函数来判断给定的目标值是否存在于数组中。如果 nums 中存在这个目标值 target ,则返回 true ,否则返回 false 。

你必须尽可能减少整个操作步骤。

 

示例 1:

输入:nums = [2,5,6,0,0,1,2], target = 0

输出:true

示例 2:

输入:nums = [2,5,6,0,0,1,2], target = 3

输出:false

2.代码实现:

class Solution {
    public boolean search(int[] nums, int target) {
        int n = nums.length;
        if (n == 0) {
            return false;
        }
        if (n == 1) {
            return nums[0] == target;
        }
        int l = 0, r = n - 1;
        while (l <= r) {
            int mid = (l + r) / 2;
            if (nums[mid] == target) {
                return true;
            }
            if (nums[l] == nums[mid] && nums[mid] == nums[r]) {
                ++l;
                --r;
            } else if (nums[l] <= nums[mid]) {
                if (nums[l] <= target && target < nums[mid]) {
                    r = mid - 1;
                } else {
                    l = mid + 1;
                }
            } else {
                if (nums[mid] < target && target <= nums[n - 1]) {
                    l = mid + 1;
                } else {
                    r = mid - 1;
                }
            }
        }
        return false;
    }
}

标签:yyds,面试题,false,target,nums,int,示例,II,数组
From: https://blog.51cto.com/u_15488507/6207517

相关文章

  • 前端面试题总结
     1递归是什么?  递归确定只是函数自调用吗? 如果非得要用递归渲染一个菜单,你要怎么做.说具体的步骤. 说核心.//第n项的和sum(n)=sum(n-1)+n终止条件n=1functionsum(n){if(n==1)return1returnsum(n-1)+n}letamount=sum(100)console.log......
  • #yyds干货盘点#详解Django基础
    一:创建项目使用django-admin命令构建项目django-adminstartprojectHelloWorld如上使用django构建了一个HelloWorld项目二:项目结构我们可以看到HelloWorld项目结构如下|--HelloWorld||--__init__.py||--settings.py||--urls.py|`--wsgi.py`--manage.p......
  • #yyds干货盘点# LeetCode程序员面试金典:串联所有单词的子串
    题目:给定一个字符串 s 和一个字符串数组 words。 words 中所有字符串长度相同。 s 中的串联子串是指一个包含 words 中所有字符串以任意顺序排列连接起来的子串。例如,如果 words=["ab","cd","ef"],那么 "abcdef", "abefcd","cdabef", "cdefab","efabcd",......
  • 【Redis】面试题 GEO地理位置信息
    目录面试1http协议详情,http协议版本,http一些请求头2GET请求和POST请求的区别3如何实现服务器给客户端发送消息,websocket是什么?4悲观锁和乐观锁,如何实现今日内容1GEO地理位置信息面试1http协议详情,http协议版本,http一些请求头 -特点: 1基于请求响应--》服务端不能主......
  • 浪潮信息等企业评审通过OTII-E模块化服务器技术规范V1.0
    ■■ 近期,ODCC服务器工作组组织线上评审会议,评审通过了《OTII-E模块化服务器技术规范V1.0》。评审会议上,浪潮信息、英特尔、中国信通院等相关单位的近50位专家参与了在线评审,深入讨论目前OTII系列标准发展的关键问题、行业价值和发展方向。OTII-E是OTII系列标准中的最新技术规范,将......
  • day 50 123.买卖股票的最佳时机III
    给定一个数组,它的第i个元素是一支给定的股票在第i天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。一天一共就有五个状态,没有操作(其实我们也可以不设置这个状态)第一次......
  • #yyds干货盘点# LeetCode程序员面试金典:两数相除
    题目:给你两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和取余运算。整数除法应该向零截断,也就是截去(truncate)其小数部分。例如,8.345将被截断为8,-2.7335将被截断至-2。返回被除数 dividend 除以除数 divisor 得到的商。注意:假设我们的......
  • #yyds干货盘点# LeetCode面试题:删除有序数组中的重复项 II
    1.简述:给你一个有序数组nums,请你原地删除重复出现的元素,使得出现次数超过两次的元素只出现两次,返回删除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(1)额外空间的条件下完成。 说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数......
  • # yyds干货盘点 # Pandas另存为excel的时候我想从B列开始存储,不想要A列,应该怎么处理呢
    大家好,我是皮皮。一、前言前几天在Python最强王者交流群【eric】问了一个Pandas的问题,这里拿出来给大家分享下。另存为excel的时候我想从B列开始存储,不想要A列,应该怎么处理呢?另存为excel的时候我想从B列开始存储,不想要A列,应该怎么处理呢?我看start_col=1的时候,A列还是存在,只不过内容......
  • #yyds干货盘点#python关键字参数
    关键字参数kwarg=value 形式的 关键字参数 也可以用于调用函数。函数示例如下:defparrot(voltage,state='astiff',action='voom',type='NorwegianBlue'):print("--Thisparrotwouldn't",action,end='')print("ifyouput......