国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

LeetCode OJ|Array|Find All Numbers Disappeared in an Array

2019-11-06 06:44:37
字體:
供稿:網(wǎng)友

Given an array of integers where 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once.

Find all the elements of [1, n] inclusive that do not appear in this array.

Could you do it without extra space and in O(n) runtime? You may assume the returned list does not count as extra space.

Example:

Input:

[4,3,2,7,8,2,3,1]

Output:

[5,6]   

解析:這道題簡單地考慮應該會用兩個for循環(huán),外面的for循環(huán)從1到n,內(nèi)層循環(huán)將外面的數(shù)字與向量里面的元素以此比較,若沒有出現(xiàn),則將外面的數(shù)字添加到結果向量中去。但是注意到題目的要求是O(n)runtime,所以這種簡單的方法需要的時間復雜度是O(n^2)。既然要縮減時間,那我們就考慮犧牲空間了。可以再多建一個向量,起到像圖的遍歷里面visit數(shù)組一樣的功能。然后將原向量里面的元素映射到新向量的地址,這樣就起到了記住向量元素的作用。

將向量b初始化為大小與原向量一樣,元素全為0。然后再將原向量里面的元素對應的地址設為1,再通過一個for循環(huán)就可以找出那些原向量里面沒有的元素了。

源代碼如下:

class Solution {public:    vector<int> findDisappearedNumbers(vector<int>& nums) {       int len=nums.size();        vector<int> b;        for(int i=0;i<len;i++)        b.push_back(0);        for(int i=0;i<len;i++)        {            int m=nums[i]-1;           b[m]=1;        }        vector<int> res;        for(int i=0;i<len;i++)        {if(b[i]==0)        res.push_back(i+1);        }        return res;            }};                                                                                                                  


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 吴桥县| 荥阳市| 上虞市| 德格县| 泌阳县| 珠海市| 浪卡子县| 黄大仙区| 濮阳县| 尖扎县| 德阳市| 和林格尔县| 黔东| 阜阳市| 华宁县| 合作市| 江源县| 建平县| 南城县| 邵阳县| 灵宝市| 黄梅县| 兴隆县| 吴桥县| 黔江区| 汉川市| 包头市| 丹东市| 兴仁县| 铁力市| 潞西市| 遂昌县| 台中县| 鱼台县| 本溪市| 永年县| 中宁县| 八宿县| 武城县| 容城县| 宜州市|