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

seo网站营销推广全程实例pdf做物流哪个网站货源多

seo网站营销推广全程实例pdf,做物流哪个网站货源多,微信端怎么建设网站,深圳市企业名录154. 寻找旋转排序数组中的最小值 II 1. 题目描述2.详细题解3.代码实现3.1 Python3.2 Java 1. 题目描述 题目中转:154. 寻找旋转排序数组中的最小值 II 2.详细题解 该题是153. 寻找旋转排序数组中的最小值的进阶题,在153. 寻找旋转排序数组中的最小值…

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

  • 1. 题目描述
  • 2.详细题解
  • 3.代码实现
    • 3.1 Python
    • 3.2 Java

1. 题目描述

题目中转:154. 寻找旋转排序数组中的最小值 II
在这里插入图片描述
在这里插入图片描述

2.详细题解

    该题是153. 寻找旋转排序数组中的最小值的进阶题,在153. 寻找旋转排序数组中的最小值的基础上,将严格递增数组改为非递减数组,即允许存在相同元素,建议先尝试153. 寻找旋转排序数组中的最小值并理解后再尝试本题。
    如果不考虑 O ( l o g n ) O(log n) O(logn)的时间复杂度,直接 O ( n ) O(n) O(n)时间复杂度的扫描遍历一次即可。
    非严格升序数组,即存在相同元素的两个值。如果不旋转则最小的数值即为第一个(索引为0)的数值,数组旋转了1到n次,寻找数组中最小的元素,这道题是二分查找的变型题。

  对于严格递增的数组,假定最小值为 m i n x min_x minx,数组旋转后,假定结尾最后一个值为 t a i l tail tail,对于最小值 m i n x min_x minx,其右边的元素均小于 t a i l tail tail,而其左边的元素均大于 t a i l tail tail的值,可以利用该性质使用二分查找算法。但对于非严格递增的数组来说,由于存在相同值的情况,因此需要单独讨论。
  具体算法如下:

  • Step1:初始化:两个指针 l e f t left left r i g h t right right,分别指向数组的起始和结束位置;
  • Step2:计算中间元素的索引: m i d = ( l e f t + r i g h t ) / 2 mid = (left + right) / 2 mid=(left+right)/2
  • Step3:如果 n u m s [ m i d ] < n u m s [ r i g h t ] nums[mid] < nums[right] nums[mid]<nums[right],说明区间 ( m i d , r i g h t ] (mid, right] (mid,right]均为最小值右边的元素,故移除,更新 r i g h t = m i d right=mid right=mid,而 m i d mid mid可能为最小值,因此更新区间时不能舍弃 m i d mid mid
  • Step4:如果 n u m s [ m i d ] > n u m s [ r i g h t ] nums[mid] > nums[right] nums[mid]>nums[right],说明区间 [ l e f t , m i d ] [left, mid] [left,mid]均为最小值左边的元素,故移除,更新 l e f t = m i d + 1 left=mid+1 left=mid+1,此时 m i d mid mid值不可能为最小值,因为其已经大于了结尾值,故可舍弃 m i d mid mid
  • Step5:否则(即 n u m s [ m i d ] = n u m s [ r i g h t ] nums[mid]=nums[right] nums[mid]=nums[right]),此时难以判断是说明那个区间不包含最小值,例如 [ 3 , 3 , 3 , 1 , 2 , 3 ] 、 [ 3 , 1 , 2 , 3 , 3 , 3 , 3 ] [3,3,3,1,2,3]、[3,1,2,3,3,3,3] [3,3,3,1,2,3][3,1,2,3,3,3,3],但由于此时它们的值均相同,所以无论 n u m s [ r i g h t ] nums[right] nums[right] 是不是最小值,都有一个它的「替代品」 n u m s [ m i d ] nums[mid] nums[mid],因此可以忽略二分查找区间的右端点,更新 r i g h t − = 1 right-=1 right=1
  • Step6:当指针left小于right时,重复步骤Step2_Step6;
  • Step7:否则循环结束,返回 n u m s [ l e f t ] nums[left] nums[left]

3.代码实现

3.1 Python

class Solution:def findMin(self, nums: List[int]) -> int:left, right = 0, len(nums) - 1while left < right:mid = (left + right) // 2if nums[mid] < nums[right]:right = midelif nums[mid] > nums[right]:left = mid + 1else:right -= 1return nums[left]

在这里插入图片描述

3.2 Java

class Solution {public int findMin(int[] nums) {int left = 0, right = nums.length - 1;while (left < right){int mid = (left + right)/2;if (nums[mid] < nums[right]){right=mid;}else if (nums[mid] > nums[right]){left = mid + 1;}else{right--;}}return nums[left];}
}

在这里插入图片描述

  执行用时不必过于纠结,对比可以发现,对于python和java完全相同的编写,java的时间一般是优于python的;至于编写的代码的执行用时击败多少对手,执行用时和网络环境、当前提交代码人数等均有关系,可以尝试完全相同的代码多次执行用时也不是完全相同,只要确保自己代码的算法时间复杂度满足相应要求即可,也可以通过点击分布图查看其它coder的code。

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

相关文章:

  • wordpress站点演示三网合一建站价格
  • 做网站的语言有哪些wordpress多语言主页
  • 阿里巴巴国际站运营工作内容做网站在阿里云买什么软件
  • 情趣官方网站怎么做代理网站质量度
  • 加盟网站制作费用wordpress悬浮
  • 做用户名验证的网站服务器hugo 怎么做网站
  • 微信外链网站哪些网站可以找到做跨境电商的公司
  • 全国企业信用信息公示系统云南seo基础入门教程
  • 如何做视频会员网站山东专业网站建设哪家便宜
  • 网站建设的一些原理做软件常用的网站有哪些软件
  • 营销型网站重要性深圳企业网络推广运营技巧
  • 站长工具国产2022门户网站策划方案
  • 阿里巴巴网站建设初衷网站开发需要哪些人才
  • 做个企业网站多少钱wordpress菜单添加图标
  • 电商网站设计公司可去亿企邦wordpress建站时间
  • 无锡响应式网站制作做网站网站多久会被抓
  • 网络写作平台谷歌优化技术
  • 手机网站有什么要求上海哪家seo好
  • seo网站排名优化服务广州公司注册需要哪些资料
  • 一个人做网站原型网络推广的优势有哪些
  • 网站备案管理办法通州区网站制作
  • 网站建设的案例个人主体可以做网站吗
  • 网站返回顶部怎么做网赌网站怎么做
  • 简述网站建设的流程做成一个页面seo软件排行榜前十名
  • 富阳网站设计cms网站开发涉及的知识
  • 中国网站备案中关村在线手机参数对比
  • 河北京电电力建设有限公司网站北京企业网站定制
  • 网站建设哪家有名投资1元赚1000
  • 手机网站 免费 html百度云网盘官网
  • 天津 网站开发我想做社区团购怎么做