在原始數(shù)組上操作的題目

Move Zeros

Given an array nums, write a function to move all 0's to the end of it while maintaining the relative order of the non-zero elements.

For example, given nums = [0, 1, 0, 3, 12], after calling your function, nums should be [1, 3, 12, 0, 0].

Note:
You must do this in-place without making a copy of the array.
Minimize the total number of operations.

兩個坐標同時往前走刹缝,一個是非零數(shù)字的坐標邀摆,一個是整體數(shù)組的坐標净宵。
主要思路是將非零數(shù)字移到目標地點(數(shù)組的前半部分),剩下的全部是零滓技。

void moveZeroes(vector<int>& nums) {
        int j=0;
        for (int i=0; i<nums.size(); i++) {
            if (nums[i] != 0) {
                nums[j] = nums[i];
                j++;
            }
        }
        for ( ; j<nums.size() ; j++) {
            nums[j] = 0;
        }
        return;
    }

Remove Duplicates from Sorted Array

Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.

Do not allocate extra space for another array, you must do this in place with constant memory.

For example,
Given input array nums = [1,1,2],

Your function should return length = 2, with the first two elements of nums being 1 and 2 respectively. It doesn't matter what you leave beyond the new length.

題目分析

題目要求出去一個排序數(shù)組中重復的元素,并且不能申請額外的空間,這一類在原始數(shù)組上操作的題目還是用兩個index功舀,一個用來遍歷原始數(shù)組,一個用來記錄目標結果身弊。遍歷原始數(shù)組時辟汰,將第一個與前一個元素不同的元素存到目標位置上,當遍歷完整個數(shù)組后返回目標結果的長度

代碼

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        int len = nums.size();
        int i = 0;
        int res = 0;
        while (i < len) {
            nums[res] = nums[i];
            while (nums[i+1] == nums[i] && i < len) {
                i++;
                if (i == len){
                    res++;
                    return res;
                }
            }
            i++;
            res++;
        }
        return res;
    }
};

一種簡潔的方法

反向思維佑刷,統(tǒng)計出現(xiàn)了多少次重復莉擒,總數(shù)減去重復次數(shù)就是非重復的次數(shù)

int count = 0;
for(int i = 1; i < n; i++){
    if(A[i] == A[i-1]) count++;
    else A[i-count] = A[i];
}
return n-count;

REMOVE ELEMENT

Given an array and a value, remove all instances of that value in place and return the new length.

Do not allocate extra space for another array, you must do this in place with constant memory.

The order of elements can be changed. It doesn't matter what you leave beyond the new length.

Example:
Given input array nums = [3,2,2,3], val = 3

Your function should return length = 2, with the first two elements of nums being 2.

題目分析

將一個數(shù)組中的目標元素除去,并將非目標元素放在數(shù)組前面并算出長度瘫絮。
還是兩個索引值涨冀,一個遍歷數(shù)組,另一個存非目標元素麦萤。

代碼

class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        int len = nums.size();
        int j = 0;
        for (int i=0; i<len; i++) {
            if(nums[i] != val) {
                nums[j++] = nums[i];
            }
        }
        return j;
    }
};

Contains Duplicate

Given an array of integers, find if the array contains any duplicates. Your function should return true if any value appears at least twice in the array, and it should return false if every element is distinct.

題目分析

這道題要判斷數(shù)組中是否有重復的元素鹿鳖,可以利用set的特性,以vector中的元素初始化set壮莹,判斷兩者的長度是否相同就能判斷是否有重復的元素

代碼

class Solution {
public:
    bool containsDuplicate(vector<int>& nums) {
        return nums.size() > set<int>(nums.begin(), nums.end()).size();        
    }
};
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末翅帜,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子命满,更是在濱河造成了極大的恐慌涝滴,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異歼疮,居然都是意外死亡杂抽,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門韩脏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來缩麸,“玉大人,你說我怎么就攤上這事赡矢『贾欤” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵吹散,是天一觀的道長弧械。 經常有香客問我,道長送浊,這世上最難降的妖魔是什么梦谜? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮袭景,結果婚禮上唁桩,老公的妹妹穿的比我還像新娘。我一直安慰自己耸棒,他們只是感情好荒澡,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著与殃,像睡著了一般单山。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上幅疼,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天米奸,我揣著相機與錄音,去河邊找鬼爽篷。 笑死悴晰,一個胖子當著我的面吹牛,可吹牛的內容都是我干的逐工。 我是一名探鬼主播铡溪,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼泪喊!你這毒婦竟也來了棕硫?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤袒啼,失蹤者是張志新(化名)和其女友劉穎哈扮,沒想到半個月后纬纪,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡灶泵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年育八,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赦邻。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖实檀,靈堂內的尸體忽然破棺而出惶洲,到底是詐尸還是另有隱情,我是刑警寧澤膳犹,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布恬吕,位于F島的核電站,受9級特大地震影響须床,放射性物質發(fā)生泄漏铐料。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一豺旬、第九天 我趴在偏房一處隱蔽的房頂上張望钠惩。 院中可真熱鬧,春花似錦族阅、人聲如沸篓跛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽愧沟。三九已至,卻和暖如春鲤遥,著一層夾襖步出監(jiān)牢的瞬間沐寺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工盖奈, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留混坞,地道東北人。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓卜朗,卻偏偏與公主長得像拔第,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子场钉,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內容

  • 背景 一年多以前我在知乎上答了有關LeetCode的問題, 分享了一些自己做題目的經驗蚊俺。 張土汪:刷leetcod...
    土汪閱讀 12,737評論 0 33
  • **2014真題Directions:Read the following text. Choose the be...
    又是夜半驚坐起閱讀 9,430評論 0 23
  • 今天發(fā)這篇帖子純屬分享,我只是想把我的經歷與大家分享逛万,因為我相信有很多的姐妹和我一樣泳猬,生了孩子以后都整個人都變形了...
    如此甚好不愿將就閱讀 167評論 1 0
  • 偌大的中國 從不曾給我一次擦肩而過的緣分 在能開口的年紀只用了眼 在該伸手的年紀只剩下嘴 就這樣一直不見 好似一本...
    白云在上頭閱讀 226評論 0 1
  • 沒有清單批钠,我可能舉步維艱。多年使用習慣和自我摸索更新后得封,突然想看看別人怎么使用清單埋心。就像去偷窺他人妙招的感覺。于是...
    程曦葉閱讀 774評論 0 50