力扣:搜索旋转排序数组
发布日期:2021-05-08 20:01:09 浏览次数:15 分类:精选文章

本文共 1271 字,大约阅读时间需要 4 分钟。

为了解决这个问题,我们需要在旋转后的数组中找到目标值的位置。旋转后的数组结构复杂,我们可以利用二分查找的方法来高效地找到目标值。

方法思路

  • 问题分析:旋转后的数组由两部分组成,右边部分是升序的,左边部分也是升序的。我们需要找到目标值的位置。
  • 二分查找:在旋转后的数组中,传统的二分查找方法需要调整,因为数组不是严格的升序。我们可以将数组分为两部分,分别在右边和左边部分中查找。
  • 旋转点确定:找到旋转点,右边部分从旋转点开始到末尾,左边部分从开始到旋转点之前。
  • 查找策略:根据目标值与旋转点值的关系,决定在右边还是左边部分查找。
  • 解决代码

    public class Solution {
    public int search(int[] nums, int target) {
    int n = nums.length;
    int left = 0;
    int right = n - 1;
    while (left <= right) {
    int mid = left + (right - left) / 2;
    if (nums[mid] == target) {
    return mid;
    }
    // mid 在前半段
    if (nums[mid] >= nums[left]) {
    if (target >= nums[left] && target < nums[mid]) {
    right = mid - 1;
    } else {
    left = mid + 1;
    }
    } else {
    // mid 在后半段
    if (target > nums[mid] && target <= nums[right]) {
    left = mid + 1;
    } else {
    right = mid - 1;
    }
    }
    }
    return -1;
    }
    }

    代码解释

  • 初始化边界:设置左边界为数组开始,右边界为数组末尾。
  • 二分查找:计算中间点,比较目标值与中间点的值。
  • 调整边界:根据中间点的值和目标值的关系,调整左边界或右边界,缩小查找范围。
  • 返回结果:如果找到目标值,返回其索引;否则返回-1。
  • 这种方法确保了在旋转后的数组中高效地查找目标值,复杂度为O(log n)。

    上一篇:力扣:搜索旋转排序数组 II
    下一篇:力扣:搜索旋转排序数组中最小值 (先看)

    发表评论

    最新留言

    关注你微信了!
    [***.104.42.241]2025年05月07日 20时57分46秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章

    15个Python数据处理技巧(非常详细)零基础入门到精通,收藏这一篇就够了 2025-03-29
    2023年深信服、奇安信、360等大厂网络安全校招面试真题合集(附答案),让你面试轻松无压力! 2025-03-29
    2024年全国程序员平均薪资排名:同样是程序员,为什么差这么多?零基础到精通,收藏这篇就够了 2025-03-29
    0基础成功转行网络安全工程师,年薪30W+,经验总结都在这(建议收藏) 2025-03-29
    100个电脑常用组合键大全(非常详细)零基础入门到精通,收藏这篇就够了 2025-03-29
    10个程序员可以接私活的平台 2025-03-29
    10个运维拿来就用的 Shell 脚本,用了才知道有多爽,零基础入门到精通,收藏这一篇就够了 2025-03-29
    10条sql语句优化的建议 2025-03-29
    10款宝藏编程工具!新手必备,大牛强烈推荐! 从零基础到精通,收藏这篇就够了! 2025-03-29
    10款最佳免费WiFi黑客工具(附传送门)零基础入门到精通,收藏这一篇就够了 2025-03-29
    15个备受欢迎的嵌入式GUI库,从零基础到精通,收藏这篇就够了! 2025-03-29
    15个程序员常逛的宝藏网站!!从零基础到精通,收藏这篇就够了! 2025-03-29
    1分钟学会在Linux下模拟网络延迟 2025-03-29
    2023应届毕业生找不到工作很焦虑怎么办? 2025-03-29
    2023最新版Node.js下载安装及环境配置教程(非常详细)从零基础入门到精通,看完这一篇就够了 2025-03-29
    2023网络安全现状,一个(黑客)真实的收入 2025-03-29
    2024 年需要了解的顶级大数据工具(非常详细)零基础入门到精通,收藏这一篇就够了 2025-03-29
    2024 最新 Kali Linux 定制化魔改,完整版,添加常见60渗透工具,零基础入门到精通,收藏这篇就够了 2025-03-29
    2024大模型行业应用十大典范案例集(非常详细)零基础入门到精通,收藏这一篇就够了 2025-03-29
    2024届秋招让我(985本硕)直接破防,感觉书读了这么久结果毫无意义,读书就只为了读书,我该怎么办? 2025-03-29