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

se 网站优化淘宝客网站整站源码

se 网站优化,淘宝客网站整站源码,建行卡如何网上签约,河北做网站找谁文章目录 二分法概述二分 > value最左的位置二分 < value最右的位置局部最小值问题 二分法概述 什么是二分法呢&#xff1f;相信大家都有所了解&#xff0c;举个最经典的二分的例子。 ​ 给定一个整型有序数组&#xff0c;和一个值 v a l u e value value&#xff0c;如…

文章目录

  • 二分法概述
  • 二分 >= value最左的位置
  • 二分 <= value最右的位置
  • 局部最小值问题

二分法概述

    什么是二分法呢?相信大家都有所了解,举个最经典的二分的例子。

​ 给定一个整型有序数组,和一个值 v a l u e value value,如果 v a l u e value value在数组中,返回true否则返回false。由于数据状态的特殊性,并不需要遍历数组求解,只需要每次找到数组的中间位置mid,和value相比较,如果 > v a l u e > value >value则说明mid位置和mid位置右边的数据都不符合要求,故而更新 r = m i d − 1 r = mid - 1 r=mid1,反之则更新 l = m i d + 1 l = mid + 1 l=mid+1。这里给出两套边界条件,请自行筛选。

// 1	
public static boolean exist(int[] arr, int num) {if (sortedArr == null || sortedArr.length == 0) {return false;}int l = 0;int r = arr.length - 1;int mid = 0;// l == r 时结束,剩下最后一个数while (l < 4) { mid = l + ((r - l) >> 1); // 等价于 (l + r) / 2 ,防止溢出if (arr[mid] == num) {return true;} else if (arr[mid] >rnum) {r = mid - 1;} else {l = mid + 1;}}return arr[l] == num;
}
// 2
public static boolean exist(int[] arr, int num) {if (arr == null || arr.length == 0) {return false;}int l = 0;int r = arr.length - 1;int mid = 0;// L == R 时结束,剩下最后一个数while (l < r) {mid = l + ((r - l) >> 1);// 等价于 (l + r) / 2 ,防止溢出if (arr[mid] >= num) {r = mid;} else {l = mid + 1;}}return arr[l] == num;
}

    这个流程并不复杂,难得是边界条件的确定,这个就需要读者自行调试( D e b u g Debug Debug)理解。此处算法的时间复杂度为 O ( l o g N ) O(log N) O(logN),空间复杂度 O ( 1 ) O(1) O(1)

二分 >= value最左的位置

    自行完成,这里仅提供参考代码。

    public static int nearLeftIndex(int[] arr, int value) {if (arr == null || arr.length == 0) {return -1;}int l = 0;int r = arr.length - 1;int mid;while (l < r) {mid = (l + r) / 2;if (arr[mid] >= value) {r = mid;} else {l = mid + 1;}}return arr[l] < value ? -1 : l;}

二分 <= value最右的位置

    自行完成,这里仅提供参考代码。

 public static int nearRightIndex(int[] arr, int value) {if (arr == null || arr.length == 0) {return -1;}int l = 0;int r = arr.length - 1;int mid;while (l < r) {mid = l + r + 1 >> 1;if (arr[mid] <= value) {l = mid;} else {r = mid - 1;}}return arr[l] > value ? -1 : l;}

    相信做完这两道题你对二分的理解也更近了一步,那么接下来综合这两道练习题,请完成leetcode32题,这道题是对这两道练习题的综合,可以帮助你更好的掌握二分法,同时二分的写法也有多种,请选择适合自己的边界条件。

局部最小值问题

定义局部最小值:局部最小值是指其值严格小于左右相邻元素的值,给你一个整数数组 nums,找到局部最小值元素并返回其索引。数组可能包含多个局部最小值,在这种情况下,返回 任何一个局部最小值 所在位置即可。

  • 你可以认为 n u m s [ − 1 ] = + ∞ , n u m s [ n ] = + ∞ nums[-1] = +∞,nums[n] = +∞ nums[1]=+nums[n]=+

  • 你必须实现时间复杂度为 O(log n) 的算法来解决此问题。

  • n u m s [ i ] ! = n u m s [ i + 1 ] nums[i] != nums[i + 1] nums[i]!=nums[i+1]

  • n n n为数组长度

    此题由于数据状况特殊,题目局部最小值的定义特殊,所以我们可以使用二分法进行求解。首先我们要先知道 n u m s [ − 1 ] = + ∞ , n u m s [ n ] = + ∞ nums[-1] = +∞,nums[n] = +∞ nums[1]=+nums[n]=+,也就是数组左侧是下降的,并且右侧也是下降(U型),而且相邻元素之间不相等,这就很特殊了,保证了数组之中一定有局部最小值,并且可以二分。如果 n u m s [ m i d ] < n u m s [ m i d + 1 ] nums[mid] < nums[mid + 1] nums[mid]<nums[mid+1]则左边会存在局部最小值去掉右边( r = m i d r = mid r=mid),如果 n u m s [ m i d ] > n u m s [ m i d + 1 ] nums[mid] > nums[mid + 1] nums[mid]>nums[mid+1]则右边会存在局部最小值去掉左边( l = m i d − 1 l = mid - 1 l=mid1)。

  public static int getLessIndex(int[] arr) {if (arr == null || arr.length == 0) {return -1; // no exist}if (arr.length == 1 || arr[0] < arr[1]) {return 0;}if (arr[arr.length - 1] < arr[arr.length - 2]) {return arr.length - 1;}int l = 1;int r = arr.length - 2;int mid = 0;while (l < r) {mid = l + r >> 1;if (arr[mid] >= arr[mid + 1]) {l = mid + 1;} else {r = mid;}}return l;}

    请完成162. 寻找峰值,如果本篇文章对你有帮助,请点赞、评论、转发,你的支持是我创作的动力!!!

http://www.yayakq.cn/news/739312/

相关文章:

  • 公司网站建设需求书注册企业邮箱哪家最好
  • 做网站推广好做么广告策划书模板word
  • 网站建设最新模板wordpress更换富文本编辑器
  • 隆昌移动网站建设黑帽seo排名
  • 网站如何做即时聊天山东济宁网站建设设计
  • 温州自助模板建站东莞建设公司网页
  • 我想给图书网站做代理网站关键词是什么
  • 建电影网站赚钱挣钱吗wordpress更改域名打不开了
  • 网站运营策划辽宁朝阳百姓网免费发布信息网
  • 网站建设高效解决之道西安搬家公司联系电话
  • 网站建设的服务器做网站赚多少钱
  • 网站建设科技有限公司西服定制一般多少钱
  • 廊坊网站开发网站是否必须做认证
  • 免费空间 网站2023最新15件重大新闻
  • 主页值得是网站的主要内容所在页百度网址大全网址导航大全
  • 想自己做淘宝有什么网站吗阿里网站销量做不起来怎么办
  • 好大夫在线个人网站王建设肇庆企业做网站
  • 便民工具 网站开发福建联泰建设集团网站
  • 广州购物网站公司地址广告营销的好处
  • 中国企业网站模板网站换一个图片怎么做
  • 自定义建设网站北京网络seo
  • 做网站网站条件施工企业安全生产评价标准
  • 网站 维护方案网站设计 收费
  • 建设跨境网站做网站推广一般多少钱
  • 17网站一起做网店潮汕个人网页html模板
  • asp access网站建设源代码wordpress 导航下拉菜单
  • 手机网站做多少钱快速网站建设推荐
  • 长春网站建设 吉网传媒济南官方网站
  • 网站开发维护印花税中国制造网内贸站
  • 自动做reference的网站长沙网站排名技术