乘风破浪:LeetCode真题_033_Search in Rotated Sorted Array

一、前言

    将传统的问题进行一些稍微的变形,这个时候我们可能无所适从了,因此还是实践出真知,多练习多总结多思考。

二、Search in Rotated Sorted Array

2.1 问题

2.2 分析与解决

    题目限制了时间复杂度为O(log(n)),刚遇到这个题目的时候我们可能会感到眩晕,因为如果是正常的二分查找算法我们当然可以很快的写出代码,但是这里因为是两节从小到大排序的数字,并且互不相交,我们就不知道要怎么办了,其实仔细想一下还是使用二分查找算法,找到中间点,只需要拿中间的元素和两边的比较就能知道这个中间的元素是属于那一节的了,之后我们就可以看看我们要找的元素是不是在这个节之内,然后调整指针,经过一次调整之后,以后的查找就和之前的二分查找一个样子了。这是非常有趣的。那假如说我们的两节变成三节呢?这样的判断就比较麻烦了,当我们和最后的比,如果大于最后的,那确定不是最后一节的,但是小于的话,我们就不能判断了。

public class Solution {
public int search(int[] nums, int target) {
int start = 0;
int end = nums.length - 1;
while (start <= end){
int mid = (start + end) / 2;
if (nums[mid] == target)
return mid; if (nums[start] <= nums[mid]){
if (target < nums[mid] && target >= nums[start])
end = mid - 1;
else
start = mid + 1;
} if (nums[mid] <= nums[end]){
if (target > nums[mid] && target <= nums[end])
start = mid + 1;
else
end = mid - 1;
}
}
return -1;
}
}

三、总结

遇到这样的问题的时候,最好是拿出一张纸画一个图,然后按照原始的方法不断地扩展下去,这样可以更快的找到答案。

乘风破浪:LeetCode真题_033_Search in Rotated Sorted Array的更多相关文章

  1. 乘风破浪:LeetCode真题_026_Remove Duplicates from Sorted Array

    乘风破浪:LeetCode真题_026_Remove Duplicates from Sorted Array 一.前言     我们这次的实验是去除重复的有序数组元素,有大体两种算法. 二.Remo ...

  2. 乘风破浪:LeetCode真题_004_Median of Two Sorted Arrays

    乘风破浪:LeetCode真题_004_Median of Two Sorted Arrays 一.前言 说到算法,最难的就是一些需要通过分析得到一些递推公式或者有用的结论,进而用来解决问题的方法了. ...

  3. [LeetCode] 154. Find Minimum in Rotated Sorted Array II 寻找旋转有序数组的最小值 II

    Follow up for "Find Minimum in Rotated Sorted Array":What if duplicates are allowed? Would ...

  4. 【一天一道LeetCode】#81. Search in Rotated Sorted Array II

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Follow ...

  5. 【leetcode】Find Minimum in Rotated Sorted Array I&&II

    题目概述: Suppose a sorted array is rotated at some pivot unknown to you beforehand.(i.e., 0 1 2 4 5 6 7 ...

  6. Java for LeetCode 153 Find Minimum in Rotated Sorted Array

    Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 migh ...

  7. LeetCode题解33.Search in Rotated Sorted Array

    33. Search in Rotated Sorted Array Suppose an array sorted in ascending order is rotated at some piv ...

  8. LeetCode解题报告—— Search in Rotated Sorted Array & Search for a Range & Valid Sudoku

    1. Search in Rotated Sorted Array Suppose an array sorted in ascending order is rotated(轮流,循环) at so ...

  9. 【LeetCode】81. Search in Rotated Sorted Array II 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址:https://leetcode.com/problems/search-in ...

随机推荐

  1. PPT定时器小记

    在日常会议汇报中,往往会出现超时的情况.此时需要一种优雅提醒讲演者加快速度的方式.PPT定时器就是其中的一种方法. ppttimer,一款在GitHub上发布的开源软件,基本能满足我在本项工作中的需求 ...

  2. list双向链表容器(常用的方法总结)

    特别注意,由于list对象的结点并不要求在一段连续的内存中,所以,对于迭代器,只能通过++或者--的操作将迭代器移动到后继或者前驱结点元素处.而不能对迭代器进行+n或者-n的操作,这点与vector等 ...

  3. C指针与内存

    C指针与内存 指针是C / C++ 中重要的构造类型,指针赋予了C / C++程序直接访问和修改内存的能力.C / C++的许多重要应用,如编译.OS.嵌入式开发都依赖于这种能力. 冯诺依曼体系的计算 ...

  4. UIKit 框架之WebView

    // // ViewController.m // UIWebView // // Created by City--Online on 15/5/18. // Copyright (c) 2015年 ...

  5. 网络之NSURLSession

    NSUrlSession参考的这篇博客,自己也调试了它的代码:http://www.it165.net/pro/html/201406/15223.html ,对NSUrlSession还不太理解,先 ...

  6. [转]Magento 2 and 1 Million Products

    本文转自:https://www.goivvy.com/blog/magento-2-1-million-products Can Magento 2 handle 1 million product ...

  7. ABP的依赖注入

    目录 说说ABP的依赖注入 代码追踪 说说ABP的依赖注入 上篇abp运行机制分析分析了ABP在启动时,都做了那些事:这篇我们来说说ABP的最核心的一部分:依赖注入(DependencyInjecti ...

  8. Spring MVC 不能正常获取参数的值

    最近在开发时遇到一个非常奇怪的问题,在tomcat8中使用Spring MVC框架,在Controller中的方法参数无法正常获取到相应的值,将tomcat版本换成7.0就解决了. 记录以下解决过程, ...

  9. javascript中常见错误类型

    js中控制台报错主分两大类: 第一类:语法错误,这一类错误在javascript预解析的过程中如果遇到,则会导致整个js文件都无法执行. 另一类:统称为异常,这一类的错误会导致在错误出现的那一行之后的 ...

  10. 100行代码实现现代版Router

      原文:http://www.html-js.com/article/JavaScript-version-100-lines-of-code-to-achieve-a-modern-version ...