您的位置:首页 > 编程语言 > Java开发

[LintCode] 经典二分查找问题 - Java

2018-01-16 17:18 447 查看

描述

在一个排序数组中找一个数,返回该数出现的任意位置,如果不存在,返回-1

样例

给出数组 [1, 2, 2, 4, 5, 5].

对于 target = 2, 返回 1 或者 2.

对于 target = 5, 返回 4 或者 5.

对于 target = 6, 返回 -1.

分析

就用简单的二分查找算法解决

源码

public class Solution {
/*
* @param nums: An integer array sorted in ascending order
* @param target: An integer
* @return: An integer
*/
public int findPosition(int[] nums, int target) {
// write your code here
int start = 0;
int end = nums.length - 1;

if (nums.length < 0) {
return -1;
}

while (start <= end) {
int mid = (start + end) / 2;
if (nums[mid] == target) {
return mid;
} else {
if (nums[mid] < target) {
start = mid + 1;
} else {
end = mid - 1;
}
}
}
return -1;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法 Java LintCode