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

幼儿园网站建设方案结语seo网络推广经理

幼儿园网站建设方案结语,seo网络推广经理,wordpress头部文字改不了,做网站主播要什么条件在写这个题目之前需要大家自行看一下我之前写的博客有关二分查找思想,如何判断什么时候使用二分查找以及边界值的确定:二分查找思想力扣实例_徐憨憨!的博客-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.ds6.com.cn/news/67324.html

相关文章:

  • 建一个营销网站的步骤b2b免费发布信息平台
  • 网页网站开发助理网络营销专业学校排名
  • 40万用户自助建站营销策略手段有哪些
  • 域名估价哪个网站准确百度网盘怎么提取别人资源
  • 谷歌系平台推广seo的工作流程
  • oa连接到网站的链接怎么做seo入门培训学校
  • php网站留言板怎么做店铺推广软文500字
  • 扬州建设公司网站网站快速收录软件
  • 怎样建立静态网站抖音关键词优化
  • 爱站seo北京seo推广公司
  • 哪里有手机网站建设联系方式关键词搜索优化
  • 如何添加网站图标全网营销代理加盟
  • 公司网站没备案注册网站在哪里注册
  • 哪个网站可以做危险化学品供求谷歌seo顾问
  • wordpress站点字体修改品牌推广活动策划案例
  • 南隼深圳网站建设app如何推广以及推广渠道
  • js特效网站展示百度竞价一个月5000够吗
  • 重庆网站自己推广百度竞价seo排名
  • 网站开发工具js新网站快速排名软件
  • c2c网站建设价格游戏加盟
  • 教做饮品的网站谷歌ads
  • 建设银行网站用户名是什么意思网站备案查询
  • 担路网做网站多少钱去哪里推广软件效果好
  • 建设有限公司首页郑州网站优化平台
  • 网站如何做的有特色免费网络空间搜索引擎
  • 网站申请备案成功后怎么建设seo优化主要做什么
  • 重庆公司做网站海南seo
  • 做系统用什么网站怎样在百度上建立网站
  • 网页设计公司取名温州seo推广外包
  • 水泥网站营销方案怎么做网店推广的方式