leetcode题解-binary search题目总结
来源:互联网 发布:跆拳道道鞋多少钱淘宝 编辑:程序博客网 时间:2024/05/17 06:50
前面一段时间刷完了二叉搜索部分的题目,现在闲下来写一个总结贴,主要针对这部分题目类型以及所使用的方法。
有序数组查找目标值索引
首先来说最简单的binary-search,应用在有序数组查找target值等问题中,一般会有两种解法,也就是binary-search问题中最关键的边界问题和更新方案的区别,这里推荐大家选择一种自己喜欢的方案用就可以,不用同时记住两种,反而会搞混,比如我都是用第一种:
public int searchInsert(int[] nums, int target) { //high取数组长度减1 int low=0, high=nums.length-1, mid; //循环条件是low<=high while(low<=high){ mid = (low+high)/2; //要有返回语句且high赋值为mid-1 if(target == nums[mid]) return mid; else if(target < nums[mid]) high = mid-1; else low = mid+1; } return low; } public int searchInsert1(int[] nums, int target) { //high取数组长度 int low = 0, high = nums.length, mid; //循环条件是low<high while(low < high) { mid = low + (high - low) / 2; //没有返回语句且high赋值为mid if(nums[mid] < target) low = mid + 1; else high = mid; } return low; }
其实要注意的就三个地方,high初始值,while循环条件以及high更新方案。自己选择一套方案即可。
在这个基础上,binary-search还有几种变形,比如说寻找第一个大于或者小于target的值的索引,其实主要还是要找到边界条件的判断和更新方案,这部分的分析我们可以参考下面这个链接:
关于二分查找的总结
找到binary-search应用的点
说白了binary-search是一种加速算法时间复杂度的方法,本身并没有什么难度,重要的是如何理解题目,找到运用binary-search的地方。比如我们之前说到的有两种binary search的思路,然后再加上一个:
- 对数组的索引进行二插搜索,看相应位置的元素是否满足某种条件(基本用法)
- 直接对数组所有元素的范围进行二叉搜索,然后检查数组中所有元素是否满足相应条件(需要自己进行设计检查方法,比如378. Kth Smallest Element in a Sorted Matrix这道题目等)
- 把二叉搜索当做子函数作为一种判断依据使用,每次循环中都使用其返回一个结果作为下次循环的条件或者依据等
好多题目都忘了==又不想在重新刷一遍,所以这个总结写的有点水,不过也给自己提个醒吧,以后在刷题的时候整个文件来记录每道题的思路和点。这样方便最后进行总结和回顾,好了,就先写到这,以后慢慢在修改吧##
阅读全文
0 0
- leetcode题解-binary search题目总结
- LeetCode题解:Unique Binary Search Trees
- LeetCode题解: Validate Binary Search Tree
- [题解][Leetcode][Unique Binary Search Trees]
- 【LeetCode】【Python题解】Unique Binary Search Trees
- LeetCode题解:Unique Binary Search Trees
- LeetCode题解:Unique Binary Search Trees
- LeetCode题解:Unique Binary Search Trees II
- LeetCode题解:Validate Binary Search Tree
- LeetCode题解-98-Validate Binary Search Tree
- leetcode 题解 98. Validate Binary Search Tree
- LeetCode 96. Unique Binary Search Trees 题解
- LeetCode 98. Validate Binary Search Tree 题解
- LeetCode之Binary Search题目汇总
- LeetCode算法题目:Recover Binary Search Tree
- LeetCode算法题目:Unique Binary Search Trees
- LeetCode算法题目:Validate Binary Search Tree
- leetcode做题总结,题目Convert Sorted List to Binary Search Tree 2012/10/02
- scala常用的类型
- pyhton网络爬虫之实例爬虫
- Spring Data Redis缓存技术的应用介绍
- 设计模式(7)——桥接 Bridge
- Django静态文件处理、中间件、上传文件
- leetcode题解-binary search题目总结
- 强制初始化Bean
- 小米手机 不止Moore's Law
- java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path
- java内部类
- Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift 论文笔记
- 在原生JS的DOM对象和Jquery对象的一个异常分享
- Django编写RESTful API(六):ViewSets和Routers
- 队列