美文网首页
在旋转数组中查找元素

在旋转数组中查找元素

作者: Go语言由浅入深 | 来源:发表于2022-02-03 12:18 被阅读0次

题目

给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。
Example 1:

Input: nums = [4,5,6,7,0,1,2], target = 0
Output: 4

Example 2:

Input: nums = [4,5,6,7,0,1,2], target = 3
Output: -1

解决方法:变种二分查找,分两种情况:target在前面的有序部分;target在后面的有序部分:

func sortedSearch(nums []int, target int) int {
    if len(nums) == 0 {
        return -1
    }
    low, high := 0, len(nums)-1
    for low <= high {
        mid := low + (high-low)>>1
        if nums[mid] == target {
            return mid
        } else if nums[mid] >= nums[low] { //target在前面的有序部分
            if target >= nums[low] && nums[mid] >= target {
                high = mid - 1
            } else {
                low = mid + 1
            }
        } else if nums[mid] <= nums[high] { //target在后面的有序部分
            if target <= nums[high] && nums[mid] >= target {
                high = mid - 1
            } else {
                low = mid + 1
            }
        }
    }
    return -1
}

相关文章

  • 在旋转数组中查找元素

    题目 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中...

  • Day21 搜索旋转排序数组

    实际含义:在旋转数组中查找某元素 升序排列的整数数组 nums 在预先未知的某个点上进行了旋转(例如, [0,1,...

  • 二分法查找

    1,二分法查找,插入元素位置 2,数组旋转,求最小值问题 参考 旋转数组的最小元素

  • 旋转数组中的元素查找

    一、旋转数组中的最小数字 题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序...

  • 二分查找与二叉排序树

    二分查找 1.搜索插入位置 2. 在排序数组中查找元素的第一个和最后一个位置 3. 搜索旋转排序数组 二叉查找树 ...

  • 003-在旋转排序数组中查找元素

    描述 一个无重复元素的有序数组,在某一个位置进行了旋转,给定一个值,查找是否在数组中,如果存在则返回此元素的位置,...

  • Dart 在List数组中查找指定元素

    在List数组中查找指定元素 使用indexOf 方法

  • TypeScript数组操作

    声明 查找数组中某个元素 查找满足条件的所有元素(过滤) 删除某个元素 把多个数组拼接成一个新数组

  • 数据结构和算法面试题整理

    #数组 - [查找数组中第二小的元素] - [查找第一个没有重复的数组元素] - [合并 2 个排序好的数组] -...

  • JS数组的二分查找算法

    用途:对有序数组进行查找。如:查找指定元素在数组中的下标

网友评论

      本文标题:在旋转数组中查找元素

      本文链接:https://www.haomeiwen.com/subject/nxvdkrtx.html