[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 )

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • [转]AVALONDOCK 2.0入门指南第一部分

    [转]AVALONDOCK 2.0入门指南第一部分AvalonDock2.0可以用来为WPF创建一个类似VisualStudio的界面,深入理解如何使用AvalonDock进行开发是很重要的。在这个入门指南里,我将演示如何开始使用AvalonDock,下面的文章都是基于2.0版本的。并且不能用于早期的版本。AvalonDock是一个组合的布局模型,很多的控件都在视图上显示,一个DockingManager类也显示在停靠…

  • PHP Ajax 跨域问题最佳解决方案

    PHP Ajax 跨域问题最佳解决方案

  • 舆情监控系统python开源_舆情监测系统开源

    舆情监控系统python开源_舆情监测系统开源互联网已成为思想文化信息的集散地和社会舆论的放大器。截至2009年6月30日,我国网民数量达到3.38亿人,网民规模已稳居世界第一位,互联网的影响力也日益提升,网络舆论已成为不可小觑的强大社会力量。近年来,网络热点事件频发,其大背景主要有两方面:一是我国社会处于转型期,涌现出一些新矛盾和新问题,如贫富悬殊、官员腐败、传统价值观受冲击等;二是随着互联网技术的迅速发展,越来越多的人上网获取新闻信息,发…

  • 一个暑假额。。有一点进步。。要学的还有很多

    一个暑假都在安卓上了,本来眼高手低的觉得能学个差不多,没想到只学了个皮毛而已。到现在基本上了解了安卓的工作原理和一些常用api的调用,不过遇到瓶颈了,终于知道很多人劝的那句话,java基础很重要。现在体会到了,刚开始还能根据c++的理解大体写出小程序的细节,但是到后来,随着程序的增加,却是意识到需要系统的学习一下java,所以,前几天开始看李刚老师的疯狂java讲义,刚才因为出现了问题,一打开

  • VS2013验证控件出现 WebForms UnobtrusiveValidationMode 必须“jquery”ScriptResour……错误的解决方案

    VS2013验证控件出现 WebForms UnobtrusiveValidationMode 必须“jquery”ScriptResour……错误的解决方案

  • 【pycharm】python代码块整体缩进,整体取消缩进

    【pycharm】python代码块整体缩进,整体取消缩进pycharm编辑器的缩进和取消缩进快捷键:整体缩进:tab整体取消缩进:shift+tabpython自带编辑器的缩进和取消缩进快捷键:整体缩进Ctrl+【整体取消缩进Ctrl+】…

发表回复

您的电子邮箱地址不会被公开。

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