![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二分查找
Ealiser
这个作者很懒,什么都没留下…
展开
-
LeetCode第367题 有效的完全平方数
算法二分查找核心思想简单的二分查找问题。还是注意范围问题代码class Solution { public boolean isPerfectSquare(int num) { if(num == 1) return true; int left = 1; int right = num; while(left <= right){ int mid = left + (right - left.原创 2022-03-31 12:45:03 · 526 阅读 · 0 评论 -
LeetCode第278题 第一个错误的版本
算法二分查找核心思想本文是很常见的寻找左边界的问题,直接往里套就可。值得说明的是二分查找求mid的方法,第一种方法存在溢出的问题,使用第一种方法要使用long类型数据,第二种方法不存在溢出的问题,可以直接用int类型。//第一种mid = (left+right)/2;//第二种mid = left+(right - left)/2代码public class Solution extends VersionControl { public int firstBadVe.原创 2022-03-31 10:58:38 · 466 阅读 · 0 评论 -
LeetCode第162题 寻找峰值暨二分总结(1)
算法二分查找核心思想二分查找的边界问题代码class Solution { public int findPeakElement(int[] nums) { if(nums.length == 1) return 0; if(nums.length == 2) return nums[0] > nums[1] ? 0:1; int left = 0; int right = nums.length - 1; .原创 2022-03-30 14:46:00 · 1157 阅读 · 0 评论 -
LeetCode第611题 有效三角形的个数
算法贪心,二分查找核心思想排序完成后,遍历a+b,找出所有符合a+b>c的值。代码class Solution { public int triangleNumber(int[] nums) { if(nums.length < 3) return 0; Arrays.sort(nums); int res = 0; for(int i = 0;i < nums.length;++i){ .原创 2022-03-29 18:40:41 · 623 阅读 · 0 评论 -
LeetCode第74题 搜索二维矩阵
算法二分查找核心思想将整个过程分为两个部分,第一个部分为判定在哪行,然后对当前行进行二分查找。代码class Solution { public boolean searchMatrix(int[][] matrix, int target) { int m = matrix.length; int n = matrix[0].length; int webM = -1; for(int i = 0; i < m;.原创 2022-03-29 14:20:33 · 347 阅读 · 0 评论 -
LeetCode第33题 搜索旋转排序数组
算法二分查找核心思想1)首先想到的是双指针,分别找到两个有序数列的起点,根据target与数字第一个数字对比,选择哪个指针移动。2)另外一个思路就是二分查找法。第一种效果更好。代码//方法一class Solution { public int search(int[] nums, int target) { if(nums.length == 1 && nums[0] == target) return 0; int first.原创 2022-03-29 13:54:49 · 1222 阅读 · 0 评论 -
LeetCode第34题 在排序数组中查找元素的第一个和最后一个位置
算法递归、二分法核心思想最开始打算使用双指针的二分方法进行处理,结果发现没有办法解决找到第一个后,下一步界限的确定,压倒我这个思路的最后一根稻草是【1,1,1】,查找1.最后选择了递归法解决,觉得比较复杂的就是最后结果的迭代,我处理的不好。代码class Solution { public int[] search(int[] nums, int target,int left,int right){ System.out.println("left:"+left);.原创 2022-03-28 16:20:43 · 1113 阅读 · 0 评论 -
LeetCode第704题 二分查找
算法递归核心思想LeetCode给的解答是利用双指针进行解题,感觉也不是太二分,我选择二分到底,用的递归。代码class Solution { public int search(int[] nums, int target) { int len = nums.length; int i = len / 2; int result = -1; if(target == nums[i]) return .原创 2022-03-28 12:12:58 · 809 阅读 · 0 评论 -
LeetCode第35题 搜索插入位置
算法二分查找核心思想和二分查找,没有什么区别,注意当target大于mid的时候,更新位置加上left。代码class Solution { public int searchInsert(int[] nums, int target) { int left = 0; int right = nums.length - 1; while(left <= right){ int mid = left + (ri.原创 2022-03-28 13:02:33 · 371 阅读 · 0 评论