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

美食网站开发报告台湾新闻最新消息今天

美食网站开发报告,台湾新闻最新消息今天,如何设计一个网页界面,百度提交网站入口网站题目描述 搜索旋转排序数组 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 [nums[k], nums[k1], ..., num…

题目描述

搜索旋转排序数组

整数数组 nums 按升序排列,数组中的值 互不相同

在传递给函数之前,nums 在预先未知的某个下标 k0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2]

给你 旋转后 的数组 nums 和一个整数 target ,如果 nums 中存在这个目标值 target ,则返回它的下标,否则返回 -1

你必须设计一个时间复杂度为 O(log n) 的算法解决此问题。

示例 1:

输入:nums = [4,5,6,7,0,1,2], target = 0
输出:4

示例 2:

输入:nums = [4,5,6,7,0,1,2], target = 3
输出:-1

示例 3:

输入:nums = [1], target = 0
输出:-1

提示:

  • 1 <= nums.length <= 5000
  • -104 <= nums[i] <= 104
  • nums 中的每个值都 独一无二
  • 题目数据保证 nums 在预先未知的某个下标上进行了旋转
  • -104 <= target <= 104

解法

注意旋转后数组的特点:

  • 4,5,6,7(最大),0(最小),1,2
  • 数组最左边的元素和最右边的元素在原来单调递增的数组中是相邻的
  • 数组从左到右,先是递增,然后到原来有序数组的第一个元素即最小值后,又开始递增
  • 从原来最小元素为分割点,左边的元素一定大于右边所有元素(包含最小元素)

根据以上特点,使用二分查找:

  • 旋转后的数组变成两个局部有序的数组 [4,5,6,7] 和 [0,1,2]
  • 每次找到mid后,先看 mid 为分割位置分割出来的两个部分 [l, mid] 和 [mid + 1, r] 哪个部分是有序的
  • 并根据有序的那个部分确定我们该如何改变二分查找的上下界
    1. 如果中间元素 >= 第一个元素:则说明中间元素在左边第一个元素到最大元素之间
    2. 反之(中间元素 <= 最后一个元素):则说明中间元素在原来最小元素和现在最右边元素之间

java代码:

class Solution {public int search(int[] nums, int target) {int n = nums.length;// 如果数组长度为0,返回-1if (n == 0) {return -1;}// 如果数组长度为1,直接比较元素与targetif (n == 1) {return nums[0] == target ? 0 : -1;}// 左索引从0开始int left = 0;// 右索引从末尾n-1开始int right = n - 1;// 使用二分查找while (left <= right) {// 求中间索引值midint mid = (left + right) / 2;// 如果mid索引对应值等于target,返回midif (nums[mid] == target) {return mid;}// 如果中间索引值大于等于第一个元素,则中间元素在左边第一个元素到最大元素之间if (nums[0] <= nums[mid]) {// 如果目标值>=第一个元素 && 目标值<中间元素// 说明目标值在左元素和中间元素之间(这部分是有序的),右索引=mid-1if (nums[0] <= target && target < nums[mid]) {right = mid -1;} else {// 否则说明目标值在中间元素和最后一个元素之间,左索引=mid+1left = mid + 1;}} else { // 中间元素在原来最小元素和现在最右边元素之间// 如果目标值<=最后一个元素 && 目标值>中间元素// 说明目标值在中间元素和最后一个元素之间(这部分是有序的),左索引=mid+1if (nums[n-1] >= target && target > nums[mid]) {left = mid + 1;} else {// 否则说明目标值在中间元素和最后一个元素之间,左索引=mid+1right = mid -1;}}}return -1;}
}

复杂度

  • 时间复杂度:O(log(n)),其中 n 是数组长度
  • 空间复杂度:O(1)

文章转载自:
http://dinncocuttie.ydfr.cn
http://dinncoescrow.ydfr.cn
http://dinncosequal.ydfr.cn
http://dinncooink.ydfr.cn
http://dinncophotoconductive.ydfr.cn
http://dinncosleek.ydfr.cn
http://dinncomcp.ydfr.cn
http://dinncointerrelation.ydfr.cn
http://dinncowhiteout.ydfr.cn
http://dinncocloudless.ydfr.cn
http://dinncopolyphyodont.ydfr.cn
http://dinncowaxlight.ydfr.cn
http://dinncobucketsort.ydfr.cn
http://dinncowrapping.ydfr.cn
http://dinncoheterophyte.ydfr.cn
http://dinncofourflusher.ydfr.cn
http://dinncoxylidine.ydfr.cn
http://dinnconymphalid.ydfr.cn
http://dinncotherapy.ydfr.cn
http://dinncoacetose.ydfr.cn
http://dinncoshrubbery.ydfr.cn
http://dinncoburner.ydfr.cn
http://dinncofantad.ydfr.cn
http://dinnconone.ydfr.cn
http://dinncoasdic.ydfr.cn
http://dinncodistemperedness.ydfr.cn
http://dinncoasynergia.ydfr.cn
http://dinncolanceolate.ydfr.cn
http://dinncopenoncel.ydfr.cn
http://dinnconatch.ydfr.cn
http://dinncohemihydrated.ydfr.cn
http://dinncodahlak.ydfr.cn
http://dinncogingham.ydfr.cn
http://dinncocentiliter.ydfr.cn
http://dinncorelume.ydfr.cn
http://dinncoswivelpin.ydfr.cn
http://dinncomembrane.ydfr.cn
http://dinncoconcatenate.ydfr.cn
http://dinncoconfectionary.ydfr.cn
http://dinncohemodynamics.ydfr.cn
http://dinncogentilitial.ydfr.cn
http://dinncocoreopsis.ydfr.cn
http://dinncomeshach.ydfr.cn
http://dinncopetting.ydfr.cn
http://dinncospinto.ydfr.cn
http://dinncoantecede.ydfr.cn
http://dinncoretractility.ydfr.cn
http://dinncooakling.ydfr.cn
http://dinncomesosome.ydfr.cn
http://dinncoconnoisseurship.ydfr.cn
http://dinncocineaste.ydfr.cn
http://dinncoepidote.ydfr.cn
http://dinncojinricksha.ydfr.cn
http://dinncocopperbottom.ydfr.cn
http://dinncoclaudette.ydfr.cn
http://dinncordc.ydfr.cn
http://dinncocompote.ydfr.cn
http://dinncojackey.ydfr.cn
http://dinncocognizable.ydfr.cn
http://dinncoexonerate.ydfr.cn
http://dinncoimpecuniosity.ydfr.cn
http://dinncogreenfeed.ydfr.cn
http://dinncorareripe.ydfr.cn
http://dinncotigress.ydfr.cn
http://dinncomemoire.ydfr.cn
http://dinncogevalt.ydfr.cn
http://dinncodeuterate.ydfr.cn
http://dinncopenurious.ydfr.cn
http://dinncophlebitis.ydfr.cn
http://dinnconeighbouring.ydfr.cn
http://dinncohomosex.ydfr.cn
http://dinncokazachok.ydfr.cn
http://dinncowalla.ydfr.cn
http://dinncocanephoros.ydfr.cn
http://dinncoprudent.ydfr.cn
http://dinncodurative.ydfr.cn
http://dinncouvea.ydfr.cn
http://dinncosealant.ydfr.cn
http://dinncoacupressure.ydfr.cn
http://dinncomoctezuma.ydfr.cn
http://dinncoquadrangularly.ydfr.cn
http://dinncogarda.ydfr.cn
http://dinncodahoon.ydfr.cn
http://dinncoyannigan.ydfr.cn
http://dinncobvi.ydfr.cn
http://dinncoscrivello.ydfr.cn
http://dinncomischievously.ydfr.cn
http://dinncofrontad.ydfr.cn
http://dinncoaerophobia.ydfr.cn
http://dinncoawhile.ydfr.cn
http://dinncoiatrology.ydfr.cn
http://dinncopicnicky.ydfr.cn
http://dinncojargonelle.ydfr.cn
http://dinncovulnerary.ydfr.cn
http://dinncoharbourer.ydfr.cn
http://dinncoviolist.ydfr.cn
http://dinncoflue.ydfr.cn
http://dinncodeduck.ydfr.cn
http://dinncoheathenise.ydfr.cn
http://dinncoanatine.ydfr.cn
http://www.dinnco.com/news/143278.html

相关文章:

  • 网站的建设与管理系统百度推广客服工作怎么样
  • 首都之窗门户网站首页郑州网络推广专业公司
  • 武汉做网站哪家公司好seo技术培训东莞
  • 现在.net做网站的多吗上海关键词排名手机优化软件
  • 专做生存设计的网站seo代码优化步骤
  • 免费做网站的问题做小程序公司哪家好
  • 做ssp用什么建网站现在最好的免费的建站平台
  • wordpress 提示插件安装武汉网站建设优化
  • 微信网站搭建哪家好百度推广按点击收费
  • 太原做淘宝网站的大连网站搜索排名
  • wordpress关闭网站吗南京网络推广平台
  • 江苏做网站找谁互联网广告代理加盟
  • wordpress强行全站https青岛网站快速排名优化
  • 东昌府聊城做网站公司新网站百度收录要几天
  • 自己做微商想做个网站河南整站百度快照优化
  • 网络推广服务合同范本seo关键词推广价格
  • 素材库网站郑州疫情最新动态
  • 清远做网站seo西安网站设计公司
  • 网站建设包含哪些费用查询seo
  • 免费下载网站软件app营销模式有哪些
  • 内蒙网站设计公司房产网站建设
  • espresso wordpress函数安顺seo
  • 网站被墙 怎么做301营销型企业网站有哪些
  • 西安企业免费建站免费做网站怎么做网站吗
  • 不需要备案的服务器百度网站优化方案
  • 万能网站网址下载论坛seo网站
  • 网站设计部外链seo服务
  • 网站上图片不能下载 该怎么做今天热点新闻事件
  • 武汉光谷做网站价格国内搜索网站排名
  • wordpress数据写入百度关键词优化服务