二分查找有序数组中的特定值
1、题目背景
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target 写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回-1
2、代码实现
复制代码
3、结果展示
复制代码
版权声明: 本文为 InfoQ 作者【jun】的原创文章。
原文链接:【http://xie.infoq.cn/article/ac92a85e931021961779fa14b】。文章转载请联系作者。
本文字数:560 字
阅读完需:约 2 分钟
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target 写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回-1
public class Solution {
public static void main(String[] args) {
int[] nums = new int[]{-2, 1, -3, 4, -1, 2, 1, -5, 4};
System.out.println(search(nums, 1));
}
/**
* 给定一个n个元素有序的(升序)整型数组nums和一个目标值target
* 写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1
* @param nums
* @param target
* @return
*/
public static int search(int[] nums, int target) {
if (target < nums[0] || target > nums[nums.length - 1]) {
return -1;
}
int left = 0, right = nums.length - 1;
while (left <= right) {
int mid = left + ((right - left) >> 1);
if (nums[mid] == target)
return mid;
else if (nums[mid] < target)
left = mid + 1;
else if (nums[mid] > target)
right = mid - 1;
}
return -1;
}
}
6
Process finished with exit code 0
版权声明: 本文为 InfoQ 作者【jun】的原创文章。
原文链接:【http://xie.infoq.cn/article/ac92a85e931021961779fa14b】。文章转载请联系作者。
还未添加个人签名 2021.04.12 加入
IT行业 后端开发
促进软件开发及相关领域知识与创新的传播
评论