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

建筑工程人才培训网官网搜索引擎seo如何优化

建筑工程人才培训网官网,搜索引擎seo如何优化,高端品牌网站建设专人一对一服务,微商引流推广平台这道题自己想了一会没想出来,然后就去看题解了,感觉要满足O(n)的时间复杂度,还要满足O(1)的空间复杂度还蛮难的,这里主要把题解的思路讲一下,很巧妙。 对于输入数组nums,我们假设其长度为N,那么…


这道题自己想了一会没想出来,然后就去看题解了,感觉要满足O(n)的时间复杂度,还要满足O(1)的空间复杂度还蛮难的,这里主要把题解的思路讲一下,很巧妙。
对于输入数组nums,我们假设其长度为N,那么结果一定在[1, N + 1]中产生,最极端的情况就是nums中的元素为从1N这N个连续正整数,那么结果就是N + 1,否则其他情况下,结果一定从[1, N]中产生。那么我们知道了这个性质以后,就可以对数组进行进一步的处理,我们将nums[i]放置在下标为nums[i] - 1处,对于nums[i] <= 0nums[i] > nums.size()的情况,我们不作任何处理,因为再怎么处理也没用,此外,若下标为nums[i] - 1处的元素与下标为i处的元素(nums[i])相等,我们也不做处理,因为换了也是白换。我们首先用for循环遍历一遍数组nums,对于下标i处的元素nums[i],我们将其与下标为nums[i] - 1处的元素(nums[nums[i] - 1])进行交换,交换完之后,下标为nums[i] - 1处放置的元素是正确的,但是交换过来的值是否能与下标i匹配上,我们是不知道的,然而我们在前面提到,每进行一次for循环,在数组内存在对应的正确元素时(不存在的话就无能为力了),我们一定能保证下标为i处的元素为i + 1,因此这个交换应当是一个持续的过程,我们应该用一个while循环来实现。当经历过N次for循环后,我们可以保证:对于能正确放置在下标为i处的元素,其值一定为i + 1,因此我们只需要从左往右再遍历一次数组,检查数组的元素是否与其下标对应,如果发现某个位置上的元素nums[i] != i + 1,就说明数组缺少i + 1这个正整数,直接返回i + 1即可,如果整个for循环都没有出现这样的情况,就说明遇到了最极端的情况:nums中的元素为[1, N]这连续N个正整数,我们直接返回N + 1即可。代码注释也写的很详细,可以看看。

class Solution {
public:int firstMissingPositive(vector<int>& nums) {//将nums[i]放置在nums[nums[i] - 1]的位置上for(int i = 0; i < nums.size(); ++i){//外层for循环每循环一次,在数组中存在i + 1这个元素的情况下,一定能确保//i + 1被交换到nums[i]处,如果不存在的话就不动它while(nums[i] != i + 1){  //数值与下标不匹配的情况if(nums[i] <= 0 || nums[i] > nums.size() || nums[i] == nums[nums[i] - 1])//第一个和第二个判断条件是指nums[i] - 1超出数组的下标范围,无法被放置在数组内的任何位置//第三个判断条件是指nums[i]即将与nums[nums[i] - 1]处的数值交换,但是发现两个位置的//数值大小一样,这就没必要交换了,否则会陷入无限循环中break;int index = nums[i] - 1;  //当前遍历到的nums[i]应当放置到下标为index的位置nums[i] = nums[index];   //先将下标为index处的元素转移过来,防止被覆盖nums[index] = index + 1;//对于被交换过来的nums[index](现在的nums[i],我们不能保证nums[i] == i + 1,因此要继续寻循环)}}for(int i = 0; i < nums.size(); ++i){if(nums[i] != i + 1)return i + 1;}return nums.size() + 1;}
};
http://www.dtcms.com/wzjs/287385.html

相关文章:

  • 国内美食网站欣赏seo搜索是什么
  • 做我女朋友好吗网站广州网站建设技术外包
  • 网站建设如何电子商务主要学什么内容
  • 长春市规划建设局网站查询怎么在百度发布自己的文章
  • 做购物网站适合的服务器济宁百度推广价格
  • 网站服务器能更换吗网络推广服务外包公司
  • 做标准件生意上什么网站开发制作app软件
  • 做ppt做好的网站百度网址大全 旧版本
  • 试用平台网站建设世界十大搜索引擎排名
  • 建设网站的软件神马搜索推广
  • av做爰免费网站徐州百度seo排名优化
  • 商城网站一般建设的宽度谷歌seo教程
  • 珠海网站建设王道下拉強b2b平台是什么意思
  • 买了域名怎么做网站搜索引擎营销例子
  • 怎样做免费外贸网站免费推广的网站平台
  • 成都市住房和城乡建设局网站百度推广怎么收费标准
  • 邢台信息港最新招聘信息seo网站优化论文
  • 广州番禺网站制作公司域名注册官网
  • 北海做网站网站建设网络营销自学网站
  • adobe可以做网站吗市场调研分析
  • 南宁网站制作哪家好免费拓客软件哪个好用
  • 滨江网站开发软文代写文案
  • 用jsp怎么做的购物网站滨州网站seo
  • 网站如何做后台清理优化大师
  • 怎么做才能设计出好的网站网站优化及推广
  • 免费认证网站最近一周新闻大事
  • 福州网站设计要多少钱seo什么意思简单来说
  • java网站建设书籍广告投放公司
  • web网页设计图片seo快速整站上排名教程
  • html5网站制作教程手机百度高级搜索入口