當我學習鍊錶的時候,我在乙個問題上陷入了糾結:「不同的教材對鍊錶的頭結點有著不同的看法,有的沒有這個沒有資料的頭結點,有的有著這個頭結點。」這個問題的答案,會影響著**的實現,在判斷p->next
的寫法上會讓你和教材上的實現不同,這很困擾。
我曾確定選擇後者時,在做考試題和刷leetcode時卻碰到鍊錶以前者的方式。這讓我很難受,意味著我要推翻之前已經很是熟悉的寫法,需要調整遍歷時的思考方式和實現時要特意處理頭結點。
所以,我現在要轉換成前者嗎,以及隨之付出即將花費我大量時間來調整筆記,這個對於提公升能力價效比不高的行為值得嗎?
在我下定決心要採取前者時,我意識到「我已經陷入了一種不好的思維」。
放在這個問題上,就是「我為著選擇前者後者而糾結,卻沒有考慮兩者各自的利弊,只是單出地用腳投票。」
/**
* definition for singly-linked list.
* struct listnode
* listnode(int x) : val(x), next(nullptr) {}
* listnode(int x, listnode *next) : val(x), next(next) {}
* };
*/listnode*
removenthfromend
(listnode* head)
所以,我應該選擇有頭結點的方式。這才是理智的思考。
我記錄這個例子的目的,不是說明鍊錶,而是揭發問題背後的大問題:
我以前總是在多個「平台」之間跳來跳去,跳在一方就開始鄙視另一方,說著類似「***天下第一」之類的。這樣帶來了巨大的時間成本、學習成本、精力成本,以及在真正的能力提公升上卻毫無建樹。比如刷lc先用python一直刷,後來想要c++,用把之前做過的再用c++來一遍,但是動態規劃、樹之類的演算法我還是沒有得到提高。
這個大問題更深一步挖掘:「是把學習的工具放在重點,還是把用工具完成的作品放在重點」。比如,選擇pytorch還是tensorflow,背後都是學習機器學習的思想。
在意識到我應該關注作品後,對於所謂的「工具的門戶之見」我也明白了:「我不應該像狂信徒一樣,對著其他的工具抱有敵對心態。而是哪種工具好用、適合用、能更好解決問題,我用哪種」。比如,leetcode要沒有頭結點的,那我將它轉化成有頭結點。此外,工具日新月異,江山代有才人出,更不應該抱著這種腐朽的心態,畢竟現在已經沒有幾個人學pascal了。
鍊錶的虛擬頭結點
public class linkedlist public node e e public node override public string tostring 虛擬頭結點 private node dummyhead private int size public linkedlist 獲取...
關於公司要不要設立測試的討論
不久前關於測試的討論帖子上的發言 第乙個問題,要不要專職測試員。如果推崇把質量作為企業的核心價值,我認為專職的測試是必須的,無論團隊規模大小。這是質量和專業分工的關係決定的。做事情的人不能和監督的人是同乙個人,打個不恰當的比方就是運動員不能是裁判員。可能有人會說,某某專案沒有測試也做得不錯,我相信,...
企業太小的時候IT規劃要不要做?
企業太小的時候it規劃要不要做?drate 發表於 2006 5 20 10 49 00 昨天和幾個朋友去打籃球,好久不動了,活動一下,對自己的身體的確有好處,大累之後,睡覺也是特別的香。和我一塊打球的,有某企業的乙個it主管,由於他們公司的it應用較小,去年他還是光桿司令,今年才有一了乙個助手 同...