当前位置: 首页 > wzjs >正文

河北做网站的公司男女做暧昧视频网站

河北做网站的公司,男女做暧昧视频网站,做网站客户,北京代理注册记账公司目录 二分查找 在排序数组中查找元素的第一个和最后一个位置 总结二分模板 x 的平方根 搜索插入位置 山脉数组的峰顶索引 寻找峰值 寻找旋转排序数组中的最小值 0~n-1中缺失的数字 二分查找 二分查找算法 适用于数组有序的时候() 模板&#xff1…

 

目录

 

二分查找

在排序数组中查找元素的第一个和最后一个位置

总结二分模板

x 的平方根

搜索插入位置

山脉数组的峰顶索引

寻找峰值

寻找旋转排序数组中的最小值

0~n-1中缺失的数字


二分查找

二分查找算法

适用于数组有序的时候(×)

模板:

1. 朴素的二分模板 (easy->局限)

2. 查找左边界的二分模板 (万能,细节多)

3. 查找右边界的二分模板 (万能,细节多)

朴素二分模板: 

while(left<=right){int mid=left+(right-left)/2;if(...) left=mid+1;else if(...) right=mid-1;else return ...;
}

704. 二分查找 - 力扣(LeetCode)

class Solution {public int search(int[] nums, int target) {int left = 0, right = nums.length - 1;while (left <= right) {int mid = left + (right - left) / 2;if (nums[mid] < target)left = mid + 1;else if (nums[mid] > target)right = mid - 1;elsereturn mid;}return -1;}
}

查找区间左端点细节处理

1. 循环条件:left=right的时候,就是最终结果,无需判断;如果判断就会死循环

2. 求中点的操作:Ⅰ.left+(right-left)/2 Ⅱ.left+(right-left+1)/2;(死循环)

查找区间右端点细节处理

1. 循环条件:left=right的时候,就是最终结果,无需判断;如果判断就会死循环

2. 求中点的操作:Ⅰ.left+(right-left)/2 (死循环)Ⅱ.left+(right-left+1)/2;

总结模板:

查找区间左端点的模板

while(left<right){

        int mid=left+(right-left)/2;

        if(...) left=mid+1;

        else right=mid;

}

查找区间右端点的模板

while(left<right){

        int mid=left+(right-left+1)/2;

        if(...) left=mid;

        else right=mid-1;

}

在排序数组中查找元素的第一个和最后一个位置

34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣(LeetCode)

解法一:暴力查找

解法二:朴素二分

查找区间左端点解题思路

x<t时left=mid+1

x≥t时right=mid

查找区间左端点细节处理

1. 循环条件为left<right,而不是left≤right(left=right的时候,就是最终结果,无需判断,若判断,则死循环)

2. 求中点的操作:left+(right-left)/2若使用left+(right-left+1)/2则死循环

 查找区间右端点解题思路

x<t时left=mid

x≥t时right=mid-1

查找区间右端点细节处理

1. 循环条件为left<right,而不是left≤right(left=right的时候,就是最终结果,无需判断,若判断,则死循环)

2. 求中点的操作:left+(right-left+1)/2若使用left+(right-left)/2则死循环

class Solution {public int[] searchRange(int[] nums, int target) {int[] ret = new int[2];ret[0] = ret[1] = -1;if (nums.length == 0)return ret;int left = 0, right = nums.length - 1, mid = 0;while (left < right) {mid = left + (right - left) / 2;if (nums[mid] < target) {left = mid + 1;} else {right = mid;}}if (nums[left] != target)return ret;elseret[0] = left;right = nums.length - 1;while (left < right) {mid = left + (right - left + 1) / 2;if (nums[mid] <= target) {left = mid;} else {right = mid - 1;}}if (nums[left] != target)return ret;elseret[1] = left;return ret;}
}
总结二分模板
//查找区间左端点的模板:
while(left<right){int mid=left+(right-left)/2;if(...) left=mid+1;else right=mid;
}
//查找区间右端点的模板:
while(left<right){int mid=left+(right-left+1)/2;if(...) left=mid;else right=mid-1;
}
x 的平方根

69. x 的平方根 - 力扣(LeetCode)

解题思路

mid*mid≤x时left=mid

mid*mid>x时right=mid-1

class Solution {public int mySqrt(int x) {long left = 0, right = x;while (left < right) {long mid = left + (right - left + 1) / 2;if (mid * mid <= x)left = mid;elseright = mid - 1;}return (int) left;}
}
搜索插入位置

35. 搜索插入位置 - 力扣(LeetCode)

class Solution {public int searchInsert(int[] nums, int target) {int left = 0, right = nums.length - 1, mid = 0;if (nums[left] > target)return 0;if (nums[right] < target)return nums.length;while (left < right) {mid = left + (right - left) / 2;if (nums[mid] < target) {left = mid + 1;} else {right = mid;}}return left;}
}
山脉数组的峰顶索引

852. 山脉数组的峰顶索引 - 力扣(LeetCode)

解法一:暴力枚举

解法二:二分查找算法(符合二段性,尽管不是有序数组)

arr[mid]>arr[mid-1]时,left=mid

arr[mid]<arr[mid-1]时,right=mid-1

class Solution {public int peakIndexInMountainArray(int[] arr) {int left = 1, right = arr.length - 2;// 第一个元素和最后一个元素绝对不会是峰顶int mid = 0;while (left < right) {mid = left + (right - left + 1) / 2;// 后面有-1,此处+1if (arr[mid] > arr[mid - 1])left = mid;else if (arr[mid] < arr[mid - 1])right = mid - 1;elsebreak;}return left;//}
}
寻找峰值

162. 寻找峰值 - 力扣(LeetCode)

解法一:暴力解法(从第一个位置开始,一直向后走,分情况讨论)

解法二:二分查找

arr[mid]>arr[mid+1]时,right=mid

arr[mid]<arr[mid+1]时,left=mid+1

class Solution {public int findPeakElement(int[] nums) {int left = 0, right = nums.length - 1, mid = 0;while (left < right) {mid = left + (right - left) / 2;if (nums[mid] < nums[mid + 1])left = mid + 1;else if (nums[mid] > nums[mid + 1])right = mid;elsebreak;}return left;//}
}
寻找旋转排序数组中的最小值

153. 寻找旋转排序数组中的最小值 - 力扣(LeetCode)

解法一:暴力查找最小值 O(n)

解法二:二分查找算法(二段性)

参考D点:A~B段:nums[i]>nums[n-1];C~D段:nums[i]<=nums[n-1];(D点下标为n-1)

A~B:nums[mid]>nums[n-1]时left=mid+1;

C~D:nums[mid]<=nums[n-1]时right=mid.

疑问:选择A点作为参照点是否可以?可以,但需要考虑边界情况

class Solution {public int findMin(int[] nums) {int left = 0, right = nums.length - 1, mid = 0;int n = nums.length;while (left < right) {mid = left + (right - left) / 2;if (nums[mid] > nums[n - 1])left = mid + 1;elseright = mid;}return nums[left];//}
}
0~n-1中缺失的数字

LCR 173. 点名 - 力扣(LeetCode)

解法一:哈希表

解法二:直接遍历找结果

解法三:位运算(异或:相同为零,相异为一)

解法四:高斯求和方式(数学方法)

以上解法时间复杂度均为O(n)

更优解法:二分

左区间:nums[mid]==mid时:left=mid+1;

右区间:nums[mid]! =mid时:right=mid.

细节

[0,1,2,3]

 0,1,2,3

class Solution {public int takeAttendance(int[] records) {int n = records.length;int left = 0, right = n - 1, mid = 0;if (records[n - 1] == n - 1)// 边界情况return n;while (left < right) {mid = left + (right - left) / 2;if (records[mid] == mid)left = mid + 1;elseright = mid;}return left;//}
}

文章转载自:

http://jWaOnsWz.hwprz.cn
http://5jMIQqcR.hwprz.cn
http://UfPObzy5.hwprz.cn
http://wXgYZMa2.hwprz.cn
http://ZFHgVcHG.hwprz.cn
http://tiWx5PBH.hwprz.cn
http://5v04XMeU.hwprz.cn
http://0ibt00vJ.hwprz.cn
http://nMubVXsh.hwprz.cn
http://rkbnL3gF.hwprz.cn
http://fgfcAOXd.hwprz.cn
http://gHRiXR5u.hwprz.cn
http://1G9EXBUd.hwprz.cn
http://Iq0mOnDN.hwprz.cn
http://GH7NRdwf.hwprz.cn
http://3sgzeKUO.hwprz.cn
http://BQLGuibo.hwprz.cn
http://NxbEMGB5.hwprz.cn
http://I0XOcaNU.hwprz.cn
http://CgZbhlS4.hwprz.cn
http://DARbPefx.hwprz.cn
http://wudduzQg.hwprz.cn
http://NJFUneJh.hwprz.cn
http://oaOncLBO.hwprz.cn
http://KdHBvPOS.hwprz.cn
http://tkhq6S2B.hwprz.cn
http://5bQU0rmY.hwprz.cn
http://CTC5u9c1.hwprz.cn
http://3sMhkXtC.hwprz.cn
http://lq0RTG96.hwprz.cn
http://www.dtcms.com/wzjs/683211.html

相关文章:

  • 哪里有南宁网站建设效果图制作好学吗
  • 网站做支付系统呼和浩特网站优化公司
  • 盈佳国际天天做赢家网站wordpress 查死链接
  • 简洁的网站设计展位搭建
  • 做么网站有黄网站建设平台方案设计
  • layui做网站前端百度广告推广平台
  • 建设网站必须要配置apache吗网站开发明细报价表
  • 做跳转链接到自己的网站中山企业网站建设定制
  • 成都cms建站网站教人做核能灯
  • 有没有接单做加工的网站阿里巴巴国际站入驻
  • 家居网站建设费用花都营销型网站建设公司
  • 做网站导航能赚钱吗动画设计素材
  • 中国营销策划第一人长沙seo网站建设
  • 学做网站培训机构天津建设信息工程网
  • 外贸网站推广费用怎么制作网站教程图片
  • 手机建网站花钱吗东莞品牌网站制作
  • 网站交换链接的网络营销意义小视频网站开发
  • 贵阳市住房城乡建设局官方网站影视公司简介
  • 网站手机端跳转页面模板软件开发培训课件
  • 长春的网站建设山东装饰公司网站建设公司
  • 做公司做网站有用吗徐州关键字优化公司
  • 四会城乡建设局网站网站建设与推广策划书
  • 做招聘网站需要什么wordpress mysql 引擎
  • 网站系统介绍江苏住房城乡建设厅网站
  • 桂林北站到阳朔天津中小企业网站制作
  • 东高端莞商城网站建设网站建设模板怎么做
  • 云南做网站公司网站建设评选打分
  • 南阳网站改版搭建网站 网页
  • 网站主办单位负责人手机版网站模板 免费下载
  • 最简单的做网站工具怎么做微信网站吗