题目描述:

解决:

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


我们在LeCo-33.中知道我们可以考虑局部有序,但是这道题,有重复元素,只保证不递减,可能会出现上图所示的情况。也就是说left=mid=right。怎么办?直觉反应,我们考虑left mid-1 mid+1 right 是否相等?

那这种情况呢?我们是不是陷入无止境了?
回想我们的目的,我们要找到mid左右两端非降序的某部分,然后对该部分进行二分,由于left =mid =right阻碍了我们处理,那么我直接left++,right- -规避掉这种情况不就行了?实在是高啊!!!!

LeCo-81.搜索旋转数组(二)相关推荐

  1. 81. 搜索旋转排序数组 II

    81. 搜索旋转排序数组 II Ideas 这题,,,,对Python来说一点技术含量没有. 哈哈哈哈,开个玩笑,完美的避开了考点. Code Python class Solution:def se ...

  2. 程序员面试金典 - 面试题 10.03. 搜索旋转数组(二分查找)

    1. 题目 搜索旋转数组.给定一个排序后的数组,包含n个整数,但这个数组已被旋转过很多次了,次数不详. 请编写代码找出数组中的某个元素,假设数组元素原先是按升序排列的.若有多个相同元素,返回索引值最小 ...

  3. 60. Leetcode 面试题 10.03. 搜索旋转数组 (二分查找-局部有序)

    搜索旋转数组.给定一个排序后的数组,包含n个整数,但这个数组已被旋转过很多次了,次数不详.请编写代码找出数组中的某个元素,假设数组元素原先是按升序排列的.若有多个相同元素,返回索引值最小的一个.示例1 ...

  4. leetcode面试题 10.03. 搜索旋转数组(二分法)

    搜索旋转数组.给定一个排序后的数组,包含n个整数,但这个数组已被旋转过很多次了,次数不详.请编写代码找出数组中的某个元素,假设数组元素原先是按升序排列的.若有多个相同元素,返回索引值最小的一个. 示例 ...

  5. 程序员面试金典 - 面试题 10.03. 搜索旋转数组

    题目难度: 中等 原题链接 今天继续更新程序员面试金典系列, 大家在公众号 算法精选 里回复 面试金典 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 搜索旋转数组.给定一个排序后的数组 ...

  6. 81. 搜索旋转排序数组 II(014)二分查找+思路+详解+二种做法

    一:题目 已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同. 在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 ...

  7. LeetCode 79单词搜索80删除排序数组中的重复项Ⅱ81.搜索旋转排序数组Ⅱ

    新人公众号(求支持):bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注回复进群即可加入力扣打 ...

  8. 59. Leetcode 81. 搜索旋转排序数组 II(二分查找-局部有序)

    已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同.在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转 ,使 ...

  9. 81. 搜索旋转排序数组 II---Leecode----java

    思路分析 旋转前后,数组中的值总是不变,可以直接进行比较. 代码实现 class Solution {public boolean search(int[] nums, int target) {fo ...

  10. leetcode 81. 搜索旋转排序数组 II(二分查找)

    已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同. 在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转 , ...

最新文章

  1. LeetCode简单题之反转字符串
  2. 在室内停车场使用道路标记语义进行厘米级建图和定位
  3. 3个月带你通关Go语言
  4. 详析VC中坐标系的建立
  5. Ajax实战:Ajax的四个基本原则
  6. 数据库SQL面试题七则
  7. ASP.NET Core 介绍
  8. 前端学习(1747):前端调试值之console用处
  9. 如何通过三视图判断立方体个数_装机小白看过来:如何通过显卡参数来判断高端低端?...
  10. T-SQL select语句连接两个表
  11. ActionErrors 使用说明 struts1 validate 处理流程 详细教程(转)
  12. JAVA语言基础-面向对象(方法重写概述及其应用)
  13. java删除文件目录及文件_Java删除文件,目录
  14. python身份证区域分割_python 身份证归属地解析
  15. 如何将Excel的单元格设置成下拉选项?-excel设置下拉菜单
  16. python 确定字符互异
  17. 运营小技能:自定义公众号菜单模版(带有文章分类栏目、内容列表)、获取历史页面
  18. react应用结构框架图
  19. 自然语言16_Chunking with NLTK
  20. 第4章 设计目标与原则

热门文章

  1. 重温归一化(MinMaxScaler)和标准化(StandardScaler)
  2. 从Darry Ring看奢侈品该如何玩转互联网思维
  3. 跟着清风学建模——拟合算法介绍及mathlab代码实现
  4. tomcat配置manger账户和host-manager账户的方法详细图解
  5. [AC自动机+dp] whu oj 1572 I - Cyy and Fzz
  6. 人脸识别模型评价指标:完整梳理
  7. usart hmi(串口屏)介绍
  8. seajs学习(1)----什么是系统
  9. 用Python+Qt+Java整一个百宝箱
  10. html自定义图例,自定义 highcharts 图例之 symbol