[LeetCode] Search in Rotated Sorted Array [35]

[LeetCode] Search in Rotated Sorted Array [35]

大家好,又见面了,我是全栈君。

题目

Suppose a sorted array is rotated at some pivot unknown to you beforehand.

(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).

You are given a target value to search. If found in the array return its index, otherwise return -1.

You may assume no duplicate exists in the array.

原题链接(点我)

解题思路

旋转数组中的查找。

[1, 2, 3, 4, 5, 6]的一个旋转数组为[4, 5, 6, 1, 2, 3]。在旋转数组中寻找一个数。
最直接的方法。一次遍历。时间复杂度O(n)。可是既然是一个部分有序的数组,那么对于有序的部分我们能够想方法用二分查找。这个能够提高效率。

代码实现

class Solution {
public:
    int search(int A[], int n, int target) {
        if(A==NULL || n<=0) return -1;
        int begin = 0, end = n-1;
        while(begin<=end){
            int mid = begin + (end-begin)/2;
            if(A[mid] == target)
                return mid;
            if(A[mid] > A[end]){
                //前半段
                if(A[begin]<=target && A[mid] > target){
                    //target 在 begin 和 mid-1 之间
                    end = mid-1;
                }else{
                    begin = mid+1;
                }
            }else if(A[mid] < A[end]){
                //在后半段
                if(A[mid] < target && A[end] >=target){
                    //target 在 mid+1 和 end 之间
                    begin = mid+1;
                }else{
                    end = mid-1;
                }
            }else{
                // 由于这个题数组中不含有反复元素,此时begin==end==mid而且A[mid]!=target。所以不存在
                break;
            }
        }
        return -1;
    }
};

假设你认为本篇对你有收获,请帮顶。


另外,我开通了微信公众号–分享技术之美,我会不定期的分享一些我学习的东西.
你能够搜索公众号:
swalge
 或者扫描下方二维码关注我
[LeetCode] Search in Rotated Sorted Array [35]
(转载文章请注明出处: http://blog.csdn.net/swagle/article/details/30471141 )

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115876.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • OPKG 软件包管理

    OPKG 软件包管理Opkg是一个轻量快速的套件管理系统,目前已成为Opensource界嵌入式系统标准。常用于路由、交换机等嵌入式设备中,用来管理软件包的安装升级与下载。中文名opkg属    性套件管理系统更    新可以获取的软件包列表常用于路由、交换机等嵌入式设备常用命令opkgupdate更新可以获取的软件包列表

    2022年6月14日
    25
  • python激活码【2021.7最新】

    (python激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~M…

    2022年3月20日
    64
  • Vue项目运行报错:解决webpack版本问题「建议收藏」

    Vue项目运行报错:解决webpack版本问题「建议收藏」解决“Error:Rulecanonlyhaveoneresourcesource(providedresourceandtest+include+exclude)”前面也会报错找不到webpack,在package-lock.json里查找之,发现安装的版本竟然是5.1.0,而没有更新过依赖,可以正常编译的项目里都是4.x。那基本可以确认了。步骤:先删掉node_modules和package-lock.json手动在package.json

    2022年8月9日
    6
  • jvav是什么梗?jvav是什么?jvav史上最牛语言[通俗易懂]

    本文纯属娱乐 本文纯属娱乐 本文纯属娱乐 本文纯属娱乐 本文纯属娱乐 本文纯属娱乐jvav目录前言Jvav之父:jvav的诞生什么是Jvav?怎么下载Jvav?怎么加入jvav?jvav相关的书籍![在这里插入图片描述](https://img-blog.csdnimg.cn/2020050212315631.png?x-oss-process=image/watermark,type_ZmFu…

    2022年4月5日
    572
  • 计算机的储存容量1kb等于多少byte,1M等于多少字节?

    计算机的储存容量1kb等于多少byte,1M等于多少字节?1M等于多少字节?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!1M等于多少字节?不是1M等于多少字节,是1MB等于多少字节。字节(Byte/bait/n.[C])是计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符。字节用符号“B”表示。MB(全称MByte):计算机中…

    2022年5月9日
    81
  • performClick();[通俗易懂]

    performClick();[通俗易懂]btn.performClick(); 该方法表明——Activity运行的时候运行该button的点击事件的内容,相当于系统帮你点击了这个按钮,然后运行对应的事件

    2022年6月29日
    22

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号