hackerrank和leetcode的對比:hackerrank優點:1. 題目較多 分類明確 每道題都有難度分,2. 從main函式開始寫,3. 有contest,一般是2h五道題,或者1h 兩三道題 比較適合筆試風格。
4. 錯誤點不給出用例,要用分數買,分數通過參加比賽和ac練習題獲得
5. 除演算法題外還有別的型別的練習題
缺點:1. 因為是印度程式設計師的** 出題人都是 有時候裡面的表達有點奇怪
2. 傳統acm風格 只顧及ac 不考慮演算法優化
3. 卡
4. 題目難度分不准,有的15分的題比100分的還難
5. 除了官方題解和discuss外 基本搜不到題解
適合: 程式設計初學者練手,求職機試,考研複試,acmer訓練都可以。
leetcode:
優點:1. 前面題非常簡單,易上手,對新手來說增強信心
2. 題目經典 例如最長公共子串行 回文數等 都是必背必會的題
3. 錯誤點給出用例 方便debug(同時也是缺點)
4. 每道題都有用時的分布直方圖 方便知道你的演算法是否較快
5. 題解巨多 幾乎每個程式設計師都刷過(我也有一部分的題解)
缺點:1. 錯誤點直接給出用例 不便於水平進一步提公升
如果我哪天做一道題做不出來,惱羞成怒了,我直接if( *** ) return ***; else if(***) return ***;這樣寫,啥題我都能做出來。
2. 沒有main函式 考驗不了優化輸入輸出和自己設計資料結構裝下輸入資訊的能力
舉個例子吧。比如最簡單的一道題:
輸入n個數,求這n個數的和
例如輸入:
1 2 3 4 5 6
輸出21
如果在lc裡不寫main函式而只寫介面 那麼介面只能寫成大概這樣:
ll getsum(vector nums>
而如果寫main函式的話,其實宣告兩個變數就可以了,根本就不需要vector:
int n;
ll sum=0;
while(~scanf("%d",&n))
sum+=n;
printf("%i64d\n",sum);這方面的優化,是永遠體現不出來的。
3. 資料太弱,很多題用土辦法就能ac,不卡複雜度。(lc是基於面試的,既然面試官想考察你會不會nlogn的演算法,那麼個人認為,你寫個o(n2)的土辦法就應該直接判tle)
hackerrank 訓練軍隊
高階傳送魔法 在神奇的kasukabe國家,人們努力擁有乙個技能。一共有n個型別的技能,並且開始的時候擁有第 i 種技能的人有ci個 這個國家有t個巫師,他們有能力將乙個人的技能進行轉換。每個巫師有兩個轉移的列表,a和b 他可以將乙個人的技能從技能x轉換為技能y當且僅當x a並且y b,轉換後他會把...
leet125leet680 驗證回文串
我的 執行都是 通過stringbuilder反轉 public static boolean ispalindrome string s 雙指標 public static boolean ispalindrome string s return true 他人的雙指標 刪除左邊迴圈判斷if is...
除草 Hackerrank思考題
matrix tree 矩陣aij,表示i和j的lca的點權值,詢問矩陣的行列式 考慮首先將列按dfs序,依次開始高斯消元,假設是1 2 3,第一行第一列必定全都是w 1 因此可以直接消元,消完之後考慮2,此時所有跟2的lca為1的點必定不再2的子樹中,假設是i號點,則a2i ai2 w 1 w 1...