
前言:22届校招找到了满意的offer,这几个月没啥事干,天天躺尸,决定不能如此颓废下去,打算再次按照代码随想录的路线重新刷题,并写下博客进行记录。
ps:尽量每天一道吧,哈哈,还是躺尸舒服。刷题主要思路来源于代码随想录
目录
题目
思路
最终答案
题目给定一个 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
思路
此题比较简单,且已经给定了数组是升序数组,不用进行排序。
选取中间的数 mid 和两边的数进行对比,有如下情况
if(nums[mid] > target){ //中间的数大于目标值,说明要找的数在[left,mid)中
right = mid - 1 ;
}
if(nums[mid] < target){ //中间的数小于目标值,说明要找的数在(mid,right]中
left= mid + 1 ;
}
if(nums[mid] == target){ //中间的数等于目标值
return mid ;
}
最终答案
class Solution{
public class search(int[] nums, int target) {
int left = 0 ;
int right = nums.length - 1 ;
while( left <= right){
int mid = left + (right - left) / 2;
if(nums[mid] > target){
right = mid - 1;
}else if(nums[mid] < target){
left = mid + 1;
}else{
return mid;
}
}
return -1;
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)