当前位置:   article > 正文

「优选算法刷题」:二分查找

「优选算法刷题」:二分查找

一、题目

给定一个 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

二、思路解析

二分查找,很经典的一种排序算法,原理是通过 3 个指针进行查找。

排序主要是通过 mid 指针与目标元素大小进行比较,具体实现如下⬇️:

三、完整代码

  1. class Solution {
  2. public int search(int[] nums, int target) {
  3. Arrays.sort(nums);
  4. int left = 0;
  5. int right = nums.length - 1;
  6. while(left <= right){
  7. int mid = left + (right - left ) / 2;// 防溢出
  8. if(nums[mid] < target){
  9. left = mid + 1;
  10. }else if(nums[mid] > target){
  11. right = mid - 1;
  12. }else{
  13. return mid;
  14. }
  15. }
  16. return -1;
  17. }
  18. }

以上就是本篇博客的全部内容啦,如有不足之处,还请各位指出,期待能和各位一起进步!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/831104
推荐阅读
相关标签
  

闽ICP备14008679号