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

网站关键词添加天元建设集团有限公司违约

网站关键词添加,天元建设集团有限公司违约,flashfxp连接wordpress,广东珠海新闻头条33.搜索旋转排序数组 ​ 这是一个非常有趣的问题#xff0c;如果不要求使用O(logn)应该没人会想到吧。。 方法一#xff1a; 极致的分类讨论。旋转排序数组#xff0c;无非就是右边的增区间的数小于左边的增区间的数#xff0c;然后依次排序。因此我们只需要分三类讨论即可… 33.搜索旋转排序数组 ​ 这是一个非常有趣的问题如果不要求使用O(logn)应该没人会想到吧。。 方法一         极致的分类讨论。旋转排序数组无非就是右边的增区间的数小于左边的增区间的数然后依次排序。因此我们只需要分三类讨论即可即[left,right]在左增区间[left,right]在右增区间[left,right]在两个区间中间。只有最后一种情况需要讨论更多一点。         前两种情况可以合并为nums[left]nums[right]时的情况这样一定是有序数组。         最后一种情况又分为target在左增区间中target在右增区间中、nums[mid]在左增区间中、nums[mid]在右增区间中一共4种情况。 如果target在左增区间中则有targetnums[right] 如果target在右增区间中则targetnums[right] 如果nums[mid]在左增区间中则有nums[mid]nums[rgiht], 如果nums[mid]在右增区间中则有nums[mid]nums[rgiht], 如果使得rightmid-1;则有target在mid左边则有两种情况 ①mid在右增区间中target小于mid的值  或者  target大于mid的值且大于nums[right]的值即target在左增区间中。 ②mid在左增区间中target小于mid的值 且target也在左增区间中 class Solution { public:int search(vectorint nums, int target) {int left0,rightnums.size()-1;while(leftright){int mid(leftright)1;if(nums[mid]target) return mid;if(nums[left]nums[0]nums[right]nums[0]){if(nums[mid]target) {rightmid-1;continue;}}else{if(nums[left]nums[0]nums[right]nums[0]){if(nums[mid]target) {rightmid-1;continue;}}else{if(nums[left]nums[0]nums[right]nums[0]){if(nums[mid]nums[right]targetnums[mid]targetnums[right]){rightmid-1;continue;}if(nums[mid]nums[right](targetnums[right]||targetnums[mid])) {rightmid-1;continue;}}}}leftmid1;}return -1;} }; /* 或者讨论target在哪个区间 if(targetnums[right](targetnums[mid]||nums[mid]nums[right])){rightmid-1;continue;} if(targetnums[right]targetnums[mid]nums[mid]nums[right]) {rightmid-1;continue;} */ 合并情况 class Solution { public:int search(vectorint nums, int target) {int left0,rightnums.size()-1;while(leftright){int mid(leftright)1;if(nums[mid]target) return mid;if(nums[left]nums[right]){if(nums[mid]target) {rightmid-1;continue;}}else{if(nums[mid]nums[right]targetnums[mid]targetnums[right]) {rightmid-1;continue;}if(nums[mid]nums[right](targetnums[right]||targetnums[mid])) {rightmid-1;continue;}}leftmid1;}return -1;} }; 方法二 官方思路         一个区间分为左增区间和右增区间那么在任意一个点将这个区间断开分为两个区间一定会有一个区间是顺序区间我们保证每次只在那个顺序区间里找doge如果不在这个顺序区间里我们就直接将指针移入那个区间即可这保证了每一次也是二分的。 class Solution { public:int search(vectorint nums, int target) {int n (int)nums.size();if (!n) {return -1;}if (n 1) {return nums[0] target ? 0 : -1;}int l 0, r n - 1;while (l r) {int mid (l r) / 2;if (nums[mid] target) return mid;if (nums[l] nums[mid]) {//左区间是顺序区间if (nums[l] target target nums[mid]) {//target在左区间内则rmid-1r mid - 1;} else {l mid 1;}} else {//右区间是顺序区间if (nums[mid] target target nums[n - 1]) {//target在右区间内则lmid1l mid 1;} else {r mid - 1;}}}return -1;} }; 总结来看二分就是“均分”区间之后判断left移入右边  还是 right移入左边如果可以满足这一性质就是一个二分O(logn)的算法。  不管是第一种方法还是第二种方法都是判断如何移动只是判断方式不同第二种方法更直接。
http://www.pierceye.com/news/326485/

相关文章:

  • 沈阳火车站wordpress的vieu主题破解版
  • 食品网站建设 网站定制开发微网站建设的第一步是进行首页的设置
  • 一站式装修公司有哪些500人在线网站建设配置
  • 郴州网站制作哪个网站可以做市场调研报告
  • 劲松网站建设公司做运营需要具备什么能力
  • 企业建设网站是网络营销吗17网站一起做网店新塘
  • 电子书籍网站开发重庆网站建设快速建站
  • 广州 企业网站建设公司网页设计模板
  • 长安网站建设制作价格乐清网站
  • 小游戏网站怎么做建站徐州seo代理计费
  • 苏州网站建设数据网络淘宝网店怎么运营起来
  • 网站建设项目实战实训报告凡科建网站
  • 网站建设程序编制做网站优化的教程
  • 已有网站 需要整改 怎么做信息网官网
  • 中石建基础设施建设有限公司网站南阳网站建设的公司
  • 广东建设银行网站营销渠道策略
  • 廊坊开发区规划建设局网站网站域名续费一年多少钱
  • 网站建设需要哪些准备国外网站顶部菜单设计
  • 免费域名注册和免费建站深圳品牌沙发
  • php网站开发就业网站开发研究综述
  • 华升建设集团有限公司网站网站如何做那种诱导广告
  • 做资讯网站要什么手续科技设计公司网站模板下载
  • 西安互联网网站建设湘潭网站建设设计
  • 微网站开发方案模板前程无忧招聘网下载app官网
  • 网站推广方式大全如何写软文赚钱
  • 同城同镇网站建设做幼儿网站的目标
  • 上饶网站建设兼职辽宁沈阳做网站
  • 阳江企业网站好的外包公司
  • 深圳做分销商城网站我有域名跟空间能教我做网站吗
  • 网站子目录做推送用什么网站