LeetCode 704.二分查找【Java解题】
2021/10/10 17:17:36
本文主要是介绍LeetCode 704.二分查找【Java解题】,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 1.题目
- 2.解题思路
- 3.Java代码
- 4. 二分法回顾
1.题目
给定一个 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
提示:
- 你可以假设 nums 中的所有元素是不重复的。
- 将在 [1, 10000]之间。
- nums 的每个元素都将在 [-9999, 9999]之间。
2.解题思路
在有序的数组(nums)中利用二分法查找目标值(target)
3.Java代码
class Solution { public int search(int[] nums, int target) { int left=0; int right=nums.length-1; while(left<=right){ //int mid=(left+right)/2; //将第一行注释是因为这样写有点问题,当left和right值过大时,两者之和会溢出。 int mid=left+(right-left)/2;//建议使用这个 if(target==nums[mid]) return mid; else if(target>nums[mid]) left=mid+1; else//此处的条件是(target<nums[mid]) right=mid-1; } return -1;//表示target不在nums中 } }
4. 二分法回顾
- 二分法又叫折半查找。
- 该方法常用来查找数组中的某个元素。使用二分法的前提是该数组有序。
- 使用:
1)先定义两个变量:left、right,使mid=left+(right-left)/2。
2)若目标值target==nums[mid],则查找的值刚好与中间值相等。
3)若目标值target>nums[mid],则查找的值大于中间值,需要往数组中间值的较大端查找,此时使left=mid+1。
4)若目标值target<nums[mid],则查找的值小于中间值,需要往数组中间值的较小端查找,此时使right=mid-1。
这篇关于LeetCode 704.二分查找【Java解题】的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南