您当前的位置: 首页 >  搜索

星许辰

暂无认证

  • 0浏览

    0关注

    466博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

LeetCode_二分搜索_简单_704.二分查找

星许辰 发布时间:2022-01-06 22:42:41 ,浏览量:0

目录
  • 1.题目
  • 2.思路
  • 3.代码实现(Java)
  • 4.扩展

1.题目

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。

示例 1: 输入: nums = [-1,0,3,5,9,12], target = 9 输出: 4 解释: 9 出现在 nums 中并且下标为 4

示例 2: 输入: nums = [-1,0,3,5,9,12], target = 2 输出: -1 解释: 2 不存在 nums 中因此返回 -1

提示: 你可以假设 nums 中的所有元素是不重复的。 n 将在 [1, 10000]之间。 nums 的每个元素都将在 [-9999, 9999]之间。

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/binary-search

2.思路

此题较为简单,就是简单的二分搜索算法,不过在编写代码时要注意细节。有关二分搜索的扩展可以查看本文的第 4 部分。

3.代码实现(Java)
class Solution {
    public int search(int[] nums, int target) {
        int left = 0;
        int right = nums.length - 1;
        while (left  right 时结束循环
    while (left = nums.length || nums[left] != target) {
        return -1;
    }
    return left;
}

(3)搜索 target 的右侧边界索引

public int search_right_bound(int[] nums, int target) {
    int left = 0, right = nums.length - 1;
    //当 left > right 时结束循环
    while (left  target) {
        	right = mid - 1; 
        } else if (nums[mid]             
关注
打赏
1665627467
查看更多评论
0.6486s