多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > leetcode No41. First Missing Positive

leetcode No41. First Missing Positive

來源:程序員人生   發布時間:2016-10-06 09:42:52 閱讀次數:2418次

Question:

Given an unsorted integer array, find the first missing positive integer.

For example,
Given [1,2,0] return 3,
and [3,4,⑴,1] return 2.

Your algorithm should run in O(n) time and uses constant space.

求第1個缺失的正數

Algorithm:

傳統的做法,排序然后遍歷找到nums[i]!=i+1的元素,復雜度O(nlogn)
可以用bucket sort思想,再開辟1個數組B,把元素作為B的下標寄存在數組B中,然后遍歷找到nums[i]!=i+1,復雜度為O(n),但是空間復雜度需要O(n)。
我們可以在nums中做類似桶排序的工作,如果nums[i]!=i+1,則交換nums[i]和下標為nums[i]⑴的元素,如果nums[i]不在1~n中則不動。

Accepted Code:

class Solution { public: void swap(int &x,int &y) { int tmp=x; x=y; y=tmp; } int firstMissingPositive(vector<int>& nums) { int i=0; while(i<nums.size()) { //nums[i]!=nums[nums[i]⑴]是避免元素相等的時候出現死循環 if(nums[i]!=i+1 && nums[i]>=1 && nums[i]<=nums.size() && nums[i]!=nums[nums[i]⑴]) swap(nums[i],nums[nums[i]⑴]); else i++; } for(int i=0;i<nums.size();i++) if(nums[i]!=i+1) return i+1; return nums.size()+1; } };



生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 亚洲欧美成人永久第一网站 | 亚洲欧美一区二区三区蜜芽 | 亚洲欧美日韩中文字幕一区二区三区 | 99热久久久这里只有精品免费 | 日本午夜视频 | 免费网站黄色 | 亚洲一本之道在线观看不卡 | 久久亚洲成人 | xxxx欧美xxxx黑人 | 美国一级大毛片 | 国产福利一区二区在线观看 | 中文字幕永久视频 | 日本护士高清xxxxx | 欧美精品亚洲精品 | 国产成人鲁鲁免费视频a | 美女视频h| 国产欧美久久一区二区 | 日韩欧美精品有码在线观看 | jjzz日本老师| 亚洲人成网址在线播放a | 国产午夜毛片 | 国产一区二区三区精品视频 | 国产午夜精品久久久久九九 | 久久欧美久久欧美精品 | 爱就操| 亚洲品质自拍视频网站 | 国产精品久久毛片蜜月 | 国产mv在线观看 | 美女网站视频在线 | 亚洲最大色视频 | 一二三四视频在线观看免费高清 | 亚洲图片欧美日韩 | 羞羞网站免费观看 | 午夜精品久久久久久91 | 中文字幕不卡高清免费 | 国产一级淫片a免费播放口欧美 | 亚洲精品91 | 国产成人久久精品激情91 | 18在线观看网站 | 秋霞一级成人欧美理论 | 中出丰满大乳中文字幕 |