LeetCode简单算法题之二分法解析
2021/12/23 14:07:13
本文主要是介绍LeetCode简单算法题之二分法解析,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
题目:
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
实现:
class Solution { //首先肯定是在一个类里面去做我们要做的事情 public int search(int[] nums, int target) { //定义一个方法,参数是数组nums和整数类型目标值target int low = 0,high = nums.length - 1; //low代表nums数组中最小的数的下标值(其实也就是代表这个数在数组中代表第几个数) while(low<=high){ //当什么什么的时候,无需多解释 int mid = (high - low) / 2 +low; //mid也是一个下标值,但是注意:mid的值是最大的数的下标值减去最小的数的下标值再加low int num = nums[mid]; //这里就用上mid了。也就是将数组nums中第mid个的数拿出来赋值给num,以便后面去判断这个数和target是否相等 if(num == target) { return mid; //相等就返回mid } else if (num > target) { high = mid - 1; //如果num大于target就把high的值变成mid-1 //注意:为什么? //因为num是这个数组(注意这个数组是升序)中间那个数的值, //以num的位置为界限,数组就分为两部分(较大部分和较小部分) //当num比target大的时候,肯定和和target相等的数在这个数组的较小部分里了 //所以如果想要寻找这个值,肯定要从较小的那部分里面继续用二分法查找啦! } else { //即当num小于target的时候 low = mid + 1; //原理同上 } } return -1; } }
二分法是什么?
二分法,即一分为二的方法,比如将一个数组从中间位置断开,分成两部分,在有序数组中查找某个数时会比较快。
这篇关于LeetCode简单算法题之二分法解析的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享