记录一下LeetCode的题目,该代码使用Java语言编写
题目:
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/binary-search
简单来说,就是在数组里面查找一个值,如果该数组里面存在这个值,就返回它的数组下标;如果不存在该目标值,则返回 -1。代码如下:
class Solution {
public int search(int[] nums, int target) {
int left = 0;
int right = nums.length - 1;
while(left<=right){
int mid = (right+left)/2;
if(nums[mid] == target){
return mid;
}else if(nums[mid] < target){
left=mid+1;
}else if(nums[mid] > target){
right=mid-1;
}
}
return -1;
}
}
注意一下mid值可以有两种写法:
第一种:比较简单的一种,单纯的求中间值
int mid = (right + left)/2;
第二种:可以防止 left + right 溢出(超出整数范围)。
int mid = left + (right - left)/2;
其他的就没啥可说的了,这题已经算比较简单的了。