//感想:

1.对于这两题,我真的是做到吐,这篇博客本来是昨晚准备写的,但是对于这个第二题,我真的做到头痛,实在是太尼玛的吐血了,主要是我也是头铁,非要找到那个分界点。

2.其实之前在牛客网上做过非常类似的题目,当时就做的特别痛苦,后来做完也没总结,导致现在做又不知道思路了,不过好歹留下了代码,再次做的时候,看看之前的代码,再结合这道题目的要求也是做完了。

思路:对于33题。

题目要求要logn的,我们对自己要求也要严格一点,所有的都用二分来做,这题目其实是变种的二分,因为正常的二分是找寻一个target值,但是我们现在不是找一个target,而是去找这个排序数组的分界点,对于没有重复元素的,就比较容易了,

所以它只有这种类型,找分界点还是比较容易的。无论是找最大的,还是最小的,都是可以的,这里的二分法要格外注意左右两边的边界移动情况。这是找的最大值的下标,来看看这个helper函数

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

首先如果nums[l]<=nums[r],那么这直接就是一条斜线,可以直接返回右边界,如果nums[mid]>nums[l],说明还在上升,移动左下标指向mid,记住
现在找的是最大值,所以不能让l=mid+1,而是等于mid,不然可能会错过最大值,else 直接让r=mid-1,因为不在上升就肯定在下边,所以直接等于
就行了,继续这样循环,直到右边界移出左边界,那时候我们返回l就行了。感觉还是可以的,主要是情况没有那么复杂,下面就是下一题,原本想做一篇
写的,但是感觉写的太臃肿了,还是在写一篇吧。

class Solution {
public int search(int[] nums, int target) {
if(nums==null||nums.length==0)
return -1;
if(nums.length==1)
return target==nums[0]?0:-1;
int l=0;
int r=nums.length-1;
int i=helper(nums,l,r); if(target>=nums[0])
return helper1(nums,l,i,target);
else
return helper1(nums,i+1,r,target);
}
public int helper1(int[] nums,int l,int r,int target)
{
while(l<=r)
{
int mid=l+(r-l)/2;
if(nums[mid]==target)
return mid;
else if(nums[mid]>target)
r=mid-1;
else
l=mid+1;
}
return -1;
}
public int helper(int[] nums,int l,int r)
{
while(l<=r)
{
if(nums[l]<=nums[r])
return r;
int mid=l+(r-l)/2;
if(nums[mid]>nums[l])
l=mid;
else
r=mid-1;
}
return l;
}
}

leetcode 33和 leetcode81的更多相关文章

  1. leetcode 33和 leetcode81 II

    //接上上一篇博客,继续这个题目,现在数组中会有重复元素,情况将会变得十分复杂,比如说1,1,1,1,1   或者1,1,3,1再来 3,3,3,1,1,1,3,这些都是可以的,都是符合题目要求的,如 ...

  2. [array] leetcode - 33. Search in Rotated Sorted Array - Medium

    leetcode - 33. Search in Rotated Sorted Array - Medium descrition Suppose an array sorted in ascendi ...

  3. LeetCode 33 Search in Rotated Sorted Array [binary search] <c++>

    LeetCode 33 Search in Rotated Sorted Array [binary search] <c++> 给出排序好的一维无重复元素的数组,随机取一个位置断开,把前 ...

  4. [LeetCode] 33. Search in Rotated Sorted Array 在旋转有序数组中搜索

    Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...

  5. Java实现 LeetCode 33 搜索旋转排序数组

    33. 搜索旋转排序数组 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ). 搜索一个给定的目标值, ...

  6. LeetCode 33. Search in Rotated Sorted Array(在旋转有序序列中搜索)

    Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...

  7. [LeetCode] 33. Search in Rotated Sorted Array_Medium tag: Binary Search

    Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...

  8. LeetCode 33 Search in Rotated Sorted Array(循环有序数组中进行查找操作)

    题目链接 :https://leetcode.com/problems/search-in-rotated-sorted-array/?tab=Description   Problem :当前的数组 ...

  9. 力扣Leetcode 33. 搜索旋转排序数组

    33. 搜索旋转排序数组 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ). 搜索一个给定的目标值, ...

随机推荐

  1. JVM内存管理和垃圾回收

    无论对于Java程序员还是大数据研发人员,JVM是必须掌握的技能之一.既是面试中经常问的问题,也是在实际业务中对程序进行调优.排查类似于内存溢出.栈溢出.内存泄漏等问题的关键.笔者将按下图分多篇文章详 ...

  2. day03 爬虫基础

    一.爬虫原理1.互联网:由一堆网络设备把一台台计算机互联到一起称之为互联网2.互联网建立的目的:传递与共享数据3.上网的全过程普通用户: 打开浏览器---->往目标站点发送请求---->获 ...

  3. 嵌入式以太网模块的TCP Client模式说明

    嵌入式以太网模块采用TTL电平串口,支持TCP Server,TCP Client,UDP Slave,UDP Master,TCP-ZSD,UDP-ZSD多种通信协议,TCP服务器模式支持多连接,可 ...

  4. Bash echo输出带颜色和背景的文本

    Bash echo输出带颜色和背景的文本 1.先上效果图 2.bash代码 #!/bin/bash #************************************************* ...

  5. Codeforces 1404 D. Game of Pairs

    Codeforces 1404 D.Game of Pairs 给定\(2n\)个数\(1,2,...,2n\),A 和 B 将进行交互,规则如下: A 需要将元素分成 n 组 \(\mathbf{p ...

  6. CF1108E2 Array and Segments (Hard version)

    线段树 对于$Easy$ $version$可以枚举极大值和极小值的位置,然后判断即可 但对于$Hard$ $version$明显暴力同时枚举极大值和极小值会超时 那么,考虑只枚举极小值 对于数轴上每 ...

  7. 子线程调用invalidate()产生“Only the original thread that created a view hierarchy can touch its views.”原因分析

    目录 1.异常出处 2.从View.invalidate()方法开始分析 3.ViewRootImpl如何与View进行关联:从Activity的setContentView开始分析 3.1 最顶层的 ...

  8. EFCore 5 新特性 `SaveChangesInterceptor`

    EFCore 5 新特性 SaveChangesInterceptor Intro 之前 EF Core 5 还没正式发布的时候有发布过一篇关于 SaveChangesEvents 的文章,有需要看可 ...

  9. Spider_知识目录_基础

    知识目录 静态网页抓取 Spider_基础总结1_Request(get/post__url传参_headers_timeout)+Reponse Spider_基础总结2_Requests异常 Sp ...

  10. 浮动布局问题多,还是用inline-block吧

    说说知识陈旧的问题. 目前我的前端开发知识积累最大的问题就是版本问题,也许我已经经历了很多,尝试了很多, 但是有些知识的版本已经过时了,而我还没有来得及更新它们.更悲剧的可能是有些部分我还没有意识到. ...