最强解析面试题:旋转数组查找

Posted 魏小言

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最强解析面试题:旋转数组查找相关的知识,希望对你有一定的参考价值。


最强解析面试题:旋转数组查找

文章讲解 “ 旋转数组查找 ” 经典面试题,包含思路及源码,及解惑!

题目

一个数组是由一个递增数列右移若干位形成的,比如4,5,1,2,3是由1,2,3,4,5左移两位形成的,在这种数组中查找某一个数。

思路

  • 二分查找
    • 找出目标数值所在的区间

代码

package main
import "fmt"

func main() 
    fmt.Println("res:", Res())

func Res()  int
    var tar = []int6,1,2,3,4,5
    n:=4
    i:=0
    l:=len(tar)-1
    for ;i<=l;
        m:= i + (l-i)/2
        if tar[m] == n
            return m
        
        if tar[m] < tar[l]
            if tar[m] < n && n<=tar[l]
                i = m + 1
            else
                l = m - 1
            
        else
            if tar[i] < n && n<=tar[m]
                l = m - 1
            else
                i = m + 1
            
        
    
    return  -1

附录

自负和自大真的是搞笑!

以上是关于最强解析面试题:旋转数组查找的主要内容,如果未能解决你的问题,请参考以下文章

最强解析面试题:和为S的两个数字

最强解析面试题:连续子数组的最大和

最强解析面试题:Goland 循环队列实现

最强解析面试题:魔术索引

最强解析面试题:最小 K 个数

最强解析面试题:二叉搜索树的后序遍历序列