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

建设部网站官工程质量手册wordpress提工单

建设部网站官工程质量手册,wordpress提工单,盐城哪有做网站建设的,wordpress 装饰模板下载【算法题解答一】二分法 接上文 【算法方法总结一】二分法的一些技巧和注意事项 二分法相关题目如下: 34.在排序数组中查找元素第一和最后一个位置 使用 左闭右闭,[left,right]关键在于 nums[mid] target 的部分找 第一个 target 的过程中&#xff0…

【算法题解答·一】二分法

接上文 【算法方法总结·一】二分法的一些技巧和注意事项


二分法相关题目如下:

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

  • 使用 左闭右闭[left,right]
  • 关键在于 nums[mid] == target 的部分
  • 第一个 target 的过程中,如果 nums[mid] == target,说明 mid 已经满足条件,但 mid 前面 可能还有相同的 target,把 right 更新为mid - 1,继续往 mid 找;
  • 最后一个 target 的过程中,如果 nums[mid] == target,说明 mid 已经满足条件,但 mid 后面 可能还有相同的 target,把 left 更新为mid + 1,继续往 mid 找。
class Solution {public int[] searchRange(int[] nums, int target) {int[] ans = new int[] { -1, -1 }; // 存结果 {第一,最后}int len = nums.length;if (len == 0) return ans;int left = 0, right = len - 1; // 左闭右闭// 找第一个 target,普通的二分查找while (left <= right) {int mid = left + (right - left) / 2;if (nums[mid] == target) {ans[0] = mid; // 找到后填入ans[0]中right = mid - 1; // 往 mid 前继续找} else if (nums[mid] > target) {right = mid - 1;} else { // nums[mid] < targetleft = mid + 1;}}// 重新初始化left = 0;right = len - 1;// 找最后一个 target,普通的二分查找while (left <= right) {int mid = left + (right - left) / 2;if (nums[mid] == target) {ans[1] = mid; // 找到后填入ans[1]中left = mid + 1; // 往 mid 后继续找} else if (nums[mid] > target) {right = mid - 1;} else { // nums[mid] < targetleft = mid + 1;}}return ans;}
}

35.搜索插入位置简单

  • 使用 左闭右开[left,right)
class Solution {public int searchInsert(int[] nums, int target) {int n = nums.length;// 左闭右开,[left,right)int l = 0, r = n;while (l < r) {int mid = l + (r - l) / 2;if (target == nums[mid]) {return mid;} else if (target > nums[mid]) {l = mid + 1;} else {r = mid;}}return l; // 如果不知道返回什么,可以自己模拟一下}
}

74.搜索二维矩阵

  • 使用 左闭右开[left,right)
class Solution {public boolean searchMatrix(int[][] matrix, int target) {int m = matrix.length;int n = matrix[0].length;// 有序,所以使用二分搜索,[left,right)int l = 0, r = n * m;while (l < r) {int mid = l + (r - l) / 2;int x = mid / n; // 行索引int y = mid % n; // 列索引if (matrix[x][y] == target) {return true;} else if (matrix[x][y] > target) {r = mid;} else {l = mid + 1;}}return false; // 循环结束还没返回 true,说明没有找到,直接返回 false}
}

33.搜索旋转排序数组

  • 使用 左闭右闭[left,right]
  • 第一类 2 3 4 5 6 7 | 1 这种,也就是 nums[l] <= nums[mid]。此例子中是 2 <= 5。这种情况下,前半部分有序。如果 nums[l] <= target < nums[mid],则在前半部分找,否则去后半部分找。
  • 第二类 6 7 | 1 2 3 4 5 这种,也就是 nums[l] > nums[mid]。此例子中就是 6 > 2。这种情况下,后半部分有序。如果 nums[mid] < target <= nums[r],则在后半部分找,否则去前半部分找。
class Solution {public int search(int[] nums, int target) {int l = 0, r = nums.length - 1;while (l <= r) {int mid = l + (r - l) / 2;if (nums[mid] == target) {return mid;}// 前半段有序,后半段无序if (nums[l] <= nums[mid]) {// target 在前半段if (target >= nums[l] && target < nums[mid]) {r = mid - 1;} else { // target 在后半段l = mid + 1;}} else { // 前半段无序,后半段有序// target 在后半段if (target <= nums[r] && target > nums[mid]) {l = mid + 1;} else { // target 在前半段r = mid - 1;}}}return -1; // 没有找到 target}
}

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

在这里插入图片描述

  • 使用 左闭右开[left,right)
class Solution {public int findMin(int[] nums) {int l = 0, r = nums.length;while (l < r) {int mid = l + (r - l) / 2;// 断崖最小值在mid右边if (nums[mid] > nums[nums.length - 1]) {l = mid + 1; // 往右半段找} else { // 断崖最小值在mid左边,或为midr = mid; // mid也有可能是最小值}}return nums[l];}
}

4.寻找两个正序数组的中位数困难

暴力法很简单,但是二分法很有难度,先挖个坑之后填

http://www.dtcms.com/wzjs/585319.html

相关文章:

  • wordpress 改网站介绍wordpress下载整站源码
  • 网站建设流程与构架漯河市建设监理协会网站
  • 福建省建设资格注册与管理中心网站北京工商登记服务平台
  • wordpress主题如何导入演示关键词首页排名优化平台
  • 成都网站开发的公司网站后台上传图片步骤
  • 免费发布项目的网站网站做实名验证码
  • 如何seo网站挣钱引流推广方式
  • 建设一个游戏网站需要多少钱做餐厅网站的需求分析
  • 在线商城网站制作网站建设制作设计seo优化湖北
  • 网站要做几个备案手机网站自适应宽度
  • 用r做简易的网站互联网项目招商加盟
  • 网站中页面模板设计顺德手机网站设计信息
  • 做外卖网站制作网站开发用的图片
  • 网站文章更新注意什么网站买空间的价格
  • 房地产公司的网站建设方案常州网站建设 光龙
  • 腾讯云网站建设视频教程wordpress安装目录权限设置
  • 长沙十大景点排名优化方案
  • 可以在几个 网站备案网站改版 信科网络
  • 比特币网站建设做网站商城互联网公司
  • 外贸网站建设有哪些要求wordpress 价格
  • 仙居制作网站搭建平台聚合力
  • 南昌做网站比较好的公司有哪些做网站 南京
  • 网站流量统计实现深圳百度关键词排名
  • 深圳网站设计服务商购物网站大全
  • 云南省城乡建设培训中心网站网站后台上传不了文件
  • 公司做网站还是做app如何让WordPress快起来
  • 延边州网站建设旅游网站建设的现状
  • 做网站帮外国人淘宝专业微信网站建设公司首选公司哪家好
  • 网页站点规划国外免费建购物网站
  • 爱站网 关键词挖掘工具站网站推广技术