代碼隨想錄算法訓(xùn)練營第三天| 203.移除鏈表元素 707.設(shè)計鏈表 206.反轉(zhuǎn)鏈表

鏈表理論基礎(chǔ)

代碼隨想錄

Leetcode203?

解題思路:此題較為簡單,遍歷鏈表孝治,查找到val陶冷,跳過即可寺酪。

需注意的是霎挟,采用了虛擬頭結(jié)點的方法

程序:

class?Solution?{

public:

????ListNode*?removeElements(ListNode*?head,?int?val)?{

????????ListNode*?dummyHead?=?new?ListNode(0);

????????dummyHead->next?=?head;

????????ListNode*?cur?=?dummyHead;

????????while(cur->next?!=?NULL){

????????????if(cur->next->val?==?val){

????????????????cur->next?=?cur->next->next;

????????????}

????????????else{

????????????????cur?=?cur->next;

????????????}

????????}

????????return?dummyHead->next;

????}

};


Leetcode707

思路:此題考察了對鏈表的全面理解孙咪,較為復(fù)雜

首先票唆,需要自己定義鏈表逊躁,與以往的核心代碼稍有不同,需自己掌握鏈表的定義方法盾舌。

同樣的使用了虛擬頭結(jié)點的方法墓臭,需要注意的是,在涉及到對鏈表的增刪操作時妖谴,需要使cur指向目標(biāo)節(jié)點的前一節(jié)點窿锉,否則會出現(xiàn)錯誤操作,而涉及到讀取節(jié)點值的操作時膝舅,則需要使cur指向目標(biāo)節(jié)點嗡载。

程序:

class?MyLinkedList?{

public:

????struct?LinkNode{

????????int?val;

????????LinkNode*?next;

????????LinkNode(int?val):val(val),?next(nullptr){}

????};

????int?size?=?0;

????LinkNode*?dummyHead?=?new?LinkNode(0);

????MyLinkedList()?{

????}


????int?get(int?index)?{

????????if(index?<?0?||?index?>?(size?-?1))???return?-1;

????????LinkNode*?cur?=?dummyHead->next;

????????while(index--)???cur?=?cur->next;

????????return?cur->val;

????}


????void?addAtHead(int?val)?{

????????LinkNode*?newLink?=?new?LinkNode(val);

????????newLink->next?=?dummyHead->next;

????????dummyHead->next?=?newLink;

????????size++;

????}


????void?addAtTail(int?val)?{

????????LinkNode*?newLink?=?new?LinkNode(val);

????????LinkNode*cur?=?dummyHead;

????????while(cur->next?!=?NULL)????cur?=?cur->next;

????????cur->next?=?newLink;

????????size++;

????}


????void?addAtIndex(int?index,?int?val)?{

????????if(index?<?0?||?index?>?size?)???return;

????????LinkNode*cur?=?dummyHead;

????????LinkNode*?newLink?=?new?LinkNode(val);

????????while(index--)??cur?=?cur->next;

????????LinkNode*?temp?=?cur->next;

????????newLink->next?=?temp;

????????cur->next?=?newLink;

????????size++;

????}


????void?deleteAtIndex(int?index)?{

????????if(index?<?0?||?index?>=?size?)???return;

????????LinkNode*?cur?=?dummyHead;

????????while(index--)??cur?=?cur->next;

????????LinkNode*?tmp?=?cur->next;

????????cur->next?=?cur->next->next;

????????delete?tmp;

????????size--;

????}

};


LeetCode 206

思路:此題可以使用兩種方法解題,但思路大同小異仍稀。

(1)雙指針法

使用兩個不同的指針洼滚,更換兩節(jié)點的指向,并對指針進行更新技潘。知道遍歷完整個鏈表

程序:

class?Solution?{

public:

????ListNode*?reverseList(ListNode*?head)?{

????????ListNode*?temp;

????????ListNode*?cur?=?head;

????????ListNode*?pre?=?NULL;

????????while(cur?!=?NULL){

????????????temp?=?cur->next;

????????????cur->next?=?pre;

????????????pre?=?cur;

????????????cur?=?temp;

????????}

????????return?pre;

????}

};

(2)迭代法

思路同上遥巴,實現(xiàn)的方式有所不同

程序:

classSolution{public:

? ? ListNode*reverse(ListNode* pre,ListNode* cur){

? ? ? ? if(cur == NULL) return pre;

? ? ? ? ListNode* temp= cur->next;

? ? ? ? cur->next = pre;

? ? ? ? return reverse(cur,temp);

? ? }?

? ? ListNode*reverseList(ListNode* head){

? ? ? ? return(reverse(NULL,head));

? ? }


今日總結(jié):

1.在設(shè)計鏈表時注意到了之前已經(jīng)忘記的細節(jié):增刪操作時cur指向目標(biāo)節(jié)點的前一節(jié)點。

2.復(fù)習(xí)了迭代法三部曲享幽,但是感覺迭代法扔掌握的不夠牢铲掐,需要繼續(xù)學(xué)習(xí)。

今日學(xué)習(xí) 2h

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末值桩,一起剝皮案震驚了整個濱河市摆霉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌奔坟,老刑警劉巖斯入,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蛀蜜,居然都是意外死亡,警方通過查閱死者的電腦和手機增蹭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門滴某,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事霎奢』模” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵幕侠,是天一觀的道長帝美。 經(jīng)常有香客問我,道長晤硕,這世上最難降的妖魔是什么悼潭? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮舞箍,結(jié)果婚禮上舰褪,老公的妹妹穿的比我還像新娘。我一直安慰自己疏橄,他們只是感情好占拍,可當(dāng)我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著捎迫,像睡著了一般晃酒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上窄绒,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天贝次,我揣著相機與錄音,去河邊找鬼颗祝。 笑死浊闪,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的螺戳。 我是一名探鬼主播搁宾,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼倔幼!你這毒婦竟也來了盖腿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤损同,失蹤者是張志新(化名)和其女友劉穎翩腐,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體膏燃,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡茂卦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了组哩。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片等龙。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡处渣,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蛛砰,到底是詐尸還是另有隱情罐栈,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布泥畅,位于F島的核電站荠诬,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏位仁。R本人自食惡果不足惜柑贞,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望障癌。 院中可真熱鬧凌外,春花似錦、人聲如沸涛浙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽轿亮。三九已至疮薇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間我注,已是汗流浹背按咒。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留但骨,地道東北人励七。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像奔缠,于是被迫代替她去往敵國和親掠抬。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容