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

山东济宁网站建设设计网站开发遵循

山东济宁网站建设设计,网站开发遵循,网站安全在线检测,wordpress 输出缩略图文章目录 二分查找二分查找在排序数组中查找元素的第一个和最后一个位置搜索插入位置x 的平方根山脉数组的峰顶索引寻找峰值寻找旋转排序数组中的最小值点名 总结模版 二分查找 二分查找 没啥可说的,轻轻松松~ class Solution {public int search(int[] nums, int target) {i… 文章目录 二分查找二分查找在排序数组中查找元素的第一个和最后一个位置搜索插入位置x 的平方根山脉数组的峰顶索引寻找峰值寻找旋转排序数组中的最小值点名 总结模版 二分查找 二分查找 没啥可说的,轻轻松松~ class Solution {public int search(int[] nums, int target) {int left 0;int right nums.length - 1;while (left right) {int mid (right left) / 2;if (nums[mid] target) {right mid - 1;} else if (nums[mid] target) {left mid 1;} else {return mid;}}return -1;} }在排序数组中查找元素的第一个和最后一个位置 可以使用二分查找. 查找左端点: 把区间划分成两个部分, 1. num[mid] t , num[mid] t . 把区间划分成 num[mid] t 和 num[mid] t ,这谁都懂,就不说了. 关键是 “” 给谁? 左边还是右边? 关于为啥给右边,这里就不说了. 我在这里只是讲一个记忆方法(左右都适用): 求左端点,只看左括号,哪个括号在中间,“” 就给谁. 具体如下:划分好区间,接下来就要想指针的移动方式了. 查找右端点: 把区间划分成两个部分, 1. num[mid] t , num[mid] t . “” 给谁,参考上面的记忆方法. 求右端点,只看右括号,哪个括号在中间,“” 就给谁. 指针的移动方式,跟查找左端点的方法类似,自己写写试试~ class Solution {public int[] searchRange(int[] nums, int target) {int[] ret {-1, -1};if (nums.length 0)return ret;int left 0;int right nums.length - 1;int mid 0;while (left right) {mid left (right - left) / 2;if (nums[mid] target) {left mid 1;} else {right mid;}}if (nums[left] target)ret[0] left;elsereturn ret;right nums.length - 1;while (left right) {mid left (right - left 1) / 2;if (nums[mid] target) {left mid;} else {right mid - 1;}}ret[1] left;return ret;}}坑: nums 数组的长度可能为0.二分没写好,容易死循环. 我在写完以后,有个疑问: 为啥循环结束后 mid 指向的值,不是我们想要的? 确实困惑了我一会,不过后来一想就明白了,因为出循环后 mid 差一次更新 ( left 或 right已经变了,但是 mid 没有变). 搜索插入位置 用查找左端点的方法,秒了~ 坑: 注意边界情况 nums[nums.length-1] target. class Solution {public int searchInsert(int[] nums, int target) {if(nums[nums.length-1] target) return nums.length;int left0,rightnums.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;}}return right;} }用左端点做完以后,我想了想,为啥不能用右端点做呢? 确实困扰了我一会,后来明白了,题目要查找的值是要 target 的. 而使用查找右端点的方法,会漏掉 target 的情况: x 的平方根 分析一下,可以把区间划分成 mid*mid x 和 mid*mid x.一看就是右端点,秒了~ 坑: 数值过大,要用 long 类型. 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;} else {right mid - 1;}}return (int) left;} }山脉数组的峰顶索引 没想到怎么把数组划分成两部分. 也就是 if(...) 中的条件不会写. 看了看题解,没想到还能这样做. 以 arr[mid - 1] arr[mid] 划分~ class Solution {public int peakIndexInMountainArray(int[] arr) {int left 0, right arr.length - 1;while (left right) {int mid left (right - left 1) / 2;if (arr[mid - 1] arr[mid]) {left mid;} else {// 前面括号内有 1 ,这里就 -1 .right mid - 1;}}return left;} }寻找峰值 画图不能偷懒,要老老实实的画,写全了~ public int findPeakElement(int[] nums) {int left 0;int right nums.length - 1;while (left right) {int mid left (right - left) / 2;if (nums[mid] nums[mid 1]) {left mid 1;} else {right mid;}}return left;}寻找旋转排序数组中的最小值 没想出来,题解是用 n-1 这个位置的数来划分区间的. public int findMin(int[] nums) {int left 0;int right nums.length - 1;while (left right) {int mid left (right - left) / 2;if (nums[mid] nums[nums.length - 1]) {right mid;} else {left mid 1;}}return nums[right];}下面这个是用 0 位置来划分区间的(需要考虑一个特殊情况~). public int findMin(int[] nums) {int left 0;int right nums.length - 1;if (nums[0] nums[nums.length - 1]) {return nums[0];}while (left right) {int mid left (right - left) / 2;if (nums[mid] nums[0]) {right mid;} else {left mid 1;}}return nums[right];}点名 写出来了,用的二分~ class Solution {public int takeAttendance(int[] records) {int left 0;int right records.length-1;while(left right) {int mid left (right-left1)/2;if(records[mid] mid) {right mid -1;}else if(records[mid] mid){left mid;}}return rightrecords[right]?right1:right;} }总结 当有 二段性 时,就可以用二分查找,不必有序~ 二段性: 通过某个条件,可以把数组分成两部分,根据题意可以舍弃一部分,这就叫二段性. 模版 本文到这里就结束啦~
http://www.w-s-a.com/news/850426/

相关文章:

  • 做网站的软件是哪个上蔡做网站
  • 前后端分离实现网站开发紧急通知网页升级
  • 河北专业网站建设公司推荐佛山小程序开发平台
  • 网站开发强制开启浏览器极速模式建设网站有什么风险
  • 360全景网站建设常州专业网站建设公司咨询
  • 重庆大渡口网站建设网站增加一体化建设功能的好处
  • 网站开发完整视频网站上传 404
  • 自适应网站做推广北京建设工程招标网
  • 外贸网站设计注意事项网上商城官网入口
  • 正规的营销型网站建设公司微官网是网站吗
  • 南京行业门户网站无锡阿里巴巴做网站
  • 河北省和城乡住房建设厅网站wamp wordpress打不开
  • 在哪个平台做网站比较好自动app优化
  • 有没有能帮人快速网站备案的机构个人学做网站
  • 凌云县 城市建设 网站西安市建网站
  • 织梦xml网站地图公众号公众平台
  • 长春省妇幼网站做四维学校网站系统破解版
  • 安阳免费搭建自己的网站个人网站做商城会怎样
  • 网站建设专家公司排行网站举报有奖平台
  • 程序员不是做网站的公司装修效果全景图
  • 桥东区住房和建设局网站怎么做网上问卷
  • 做期货要看哪些网站伪装的福祉 wordpress
  • 做网站需要多少费用网站建设需要懂什么语言
  • 网站手机端做app开发商城设计方案
  • 在建设厅网站上查询注销建造师查域名是否注册
  • 企业网站推广方案策划公司网站在国外打开很慢使用cdn好还是国外租用服务器好
  • 龙华o2o网站建设百度不收录什么网站吗
  • 模板搭建网站百度信息流推广
  • 移动端网站制作模板自己做的网站点击赚钱
  • 网站站长如何赚钱wordpress抓取别人网站