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

郑州网站建设怎样什么软件比百度搜索好

郑州网站建设怎样,什么软件比百度搜索好,工业产品设计图片欣赏,wamp 怎么做两个网站在写这个题目之前需要大家自行看一下我之前写的博客有关二分查找思想,如何判断什么时候使用二分查找以及边界值的确定:二分查找思想力扣实例_徐憨憨!的博客-CSDN博客 题目:给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定…

在写这个题目之前需要大家自行看一下我之前写的博客有关二分查找思想,如何判断什么时候使用二分查找以及边界值的确定:二分查找思想+力扣实例_徐憨憨!的博客-CSDN博客

题目:给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置;如果数组中不存在目标值 target,返回 [-1, -1];你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题.

题目链接:力扣

思路分析:

1. 题目给出了在有序数组中查找目标元素target下标的位置且要求时间复杂度是O(logn),此时想到的就是利用二分查找;

2.目标元素target可能存在于数组中也可能不存在于数组中,需要分情况讨论,可以分成target在数组的左边,在数组的右边,和数组的内部:

  • 情况一:target 在数组范围的右边或者左边,例如数组{3, 4, 5},target为2或者数组{3, 4, 5},target为6,此时应该返回{-1, -1}
  • 情况二:target 在数组范围中,且数组中不存在target,例如数组{3,6,7},target为5,此时应该返回{-1, -1}
  • 情况三:target 在数组范围中,且数组中存在target,例如数组{3,6,7},target为6,此时应该返回{1, 1}

3.当数组中有target这个元素时,需要分别求出target的左边界(即第一次出现的位置)和右边界(即最后一次出现的位置),又因为时间复杂度要求是O(logn),所以在找左右边界的时候依然采用二分查找的策略,只是判断条件和下标更新的时候需要稍作调整;

4.因为给出的区间是左闭右闭的,所以在while循环中的判断语句使用left <= right,当调出循环时,left一定大于right,所以得到的左右边界都是不包含target的.

寻找右边界:

 //找右边界值private int findRightBorder(int[] nums, int target) {int left = 0;int right = nums.length - 1;int rightBorder = -2; //如果返回的rightBorder为-2说明没有查找到右边界while (left <= right) {int mid= left + ((right - left) / 2);//防止数据溢出if (nums[mid] > target) {//此时说明右边界一定在mid的左边right = middle - 1;} else { //nums[mid]=target时,说明右边界>=mid//nums[mid<target时,说明右边界>midleft = mid+ 1;rightBorder = left;}}return rightBorder;}

寻找左边界:

//找左边界值private int findLeftBorder(int[] nums, int target) {int left = 0;int right = nums.length - 1;int leftBorder = -2;//如果返回-2,说明没有找到左边界值while (left <= right) {int middle = left + ((right - left) / 2);//防止数据溢出if (nums[middle] >= target) { //当nums[mid]=target时,说明左边界<=mid//当nums[mid]>target时,说明左边界<midright = middle - 1;leftBorder = right;} else {//当nus[mid]<target时,说明左边界>midleft = middle + 1;}}return leftBorder;}

主方法中:

public int[] searchRange(int[] nums, int target) {int leftBorder = findLeftBorder(nums, target);int rightBorder = findRightBorder(nums, target);//表示target在数组的左边和右边if (leftBorder == -2 || rightBorder == -2) return new int[]{-1, -1};//说明target在存在于数组内部if (rightBorder - leftBorder > 1) {//因为leftBorder和rightBorder都不包含边界值target//所以需要给leftBorder+1 rightBorder-1return new int[]{leftBorder + 1, rightBorder - 1};}return new int[]{-1, -1};}

完整代码如下:

class Solution {public int[] searchRange(int[] nums, int target) {int leftBorder = findLeftBorder(nums, target);int rightBorder = findRightBorder(nums, target);//表示target在数组的左边和右边if (leftBorder == -2 || rightBorder == -2) return new int[]{-1, -1};//说明target在存在于数组内部if (rightBorder - leftBorder > 1) {//因为leftBorder和rightBorder都不包含边界值target//所以需要给leftBorder+1 rightBorder-1return new int[]{leftBorder + 1, rightBorder - 1};}return new int[]{-1, -1};}//找右边界值private int findRightBorder(int[] nums, int target) {int left = 0;int right = nums.length - 1;int rightBorder = -2; while (left <= right) {int middle = left + ((right - left) / 2);if (nums[middle] > target) {right = middle - 1;} else { left = middle + 1;rightBorder = left;}}return rightBorder;}//找左边界值private int findLeftBorder(int[] nums, int target) {int left = 0;int right = nums.length - 1;int leftBorder = -2;while (left <= right) {int middle = left + ((right - left) / 2);if (nums[middle] >= target) { right = middle - 1;leftBorder = right;} else {left = middle + 1;}}return leftBorder;}}

http://www.mnyf.cn/news/16682.html

相关文章:

  • wordpress赚钱广西网站seo
  • 猪八戒网站是做啥的网络优化是做什么的
  • 网站报价方案怎么做怎么交换友情链接
  • 利用花生壳做网站百度上如何做优化网站
  • wordpress+vps建站成都网站关键词排名
  • 网站设计咨询网站百度广告推广怎么收费
  • 东莞市做网站百度的seo排名怎么刷
  • 新泰建设局网站网页搜索快捷键是什么
  • 广元市住房与城乡建设厅网站google高级搜索
  • 模仿网站怎么防止侵权营销策划公司收费明细
  • icp备案网站要先建好吗体验营销策划方案
  • 做拼多多网站免费课程各引擎收录查询
  • 北京公司网站建设如何在百度打广告
  • 申请园区网站建设经费的请示徐州自动seo
  • 如何用oss做视频网站东莞网站建设优化排名
  • 易思企业网站管理系统网络推广的目标
  • 微信平台公众号开发天津放心站内优化seo
  • 镇江市扬中市做网站网站seo课程
  • 班级建设网站首页广州seo技术优化网站seo
  • 上海专业做网站的seo是什么职位
  • 三只松鼠的网站建设理念seo案例视频教程
  • 知乎 上海做网站的公司网站排名软件有哪些
  • 网站建设状态栏廊坊seo排名收费
  • 南昌网站建设公司有哪些品牌seo推广
  • 网站建设规范布局有几部分重庆网络推广公司
  • 汉中专业网站建设开发成都网络推广运营公司
  • 贵阳市 网站建设浙江企业seo推广
  • 济南营销型网站建设公司百度关键词模拟点击软件
  • 办公室装饰设计页面关键词优化
  • 免费的网站建设一般多少钱搜索网站的浏览器