錯誤的集合
最開始的想法是排序。但是
class
solution
int lose =-1
;int repeat =-1
;for
(int i=
0;isize()
;i++
)return;}
};
尋找重複數
思路一:異或運算。先從1異或到n,將得到的值與陣列中的每個值異或運算。結果不對,因為,陣列中並非每個數都會出現一遍。
思路二:用陣列代替hashtable。
public
:int
findduplicate
(vector<
int>
& nums)
return0;
}};
思路三:弗洛伊德環
3. 陣列的度
用乙個hashtabel記錄沒個數字出現的位置。
class
solution
for(
int i=
0;isize()
;i++
)int maxfre =0;
int ans = nums.
size()
;for
(pair<
int, vector<
int>>x:m)
//為何不能寫成for(pair>&x:m)
else
if(x.second.
size()
>maxfre)
}return ans;}}
;
答案用hashtable記錄沒個數字出現的次數,以及第一次出現和最後一次出現的位置。
4. 託普利茲矩陣
先判斷左下角,再判斷右邊部分
class
solution
}for
(int i=
0;ireturn
true;}
};
巢狀陣列
我的方法:暴力法。超時。利用set判斷是否有重複。
class
solution
while
(s.size()
>curlen)
;//do while ,新學的
maxlen =
max(maxlen, curlen);}
return maxlen;}}
;
其實不需要用集合來判斷,因為對於第i輪迴圈,最終肯定會等於 i。
另外,如果某個元素之前已經被訪問過,那麼這輪迴圈得到的值肯定不是最大值,可以直接跳過。所以就有如下答案的解答。
class
solution
while
(curindex != i)
; maxlen =
max(maxlen, curlen);}
}return maxlen;}}
;
另外,答案還提到,可以用o(1)的空間複雜度來做。但是需要改變原始陣列。也就是,㘝訪問過,就把原始陣列的對應位置改為-1.
最多能完成排序的塊
當我們需要檢查 [0, 1, …, n-1] 中前 k+1 個元素是不是 [0, 1, …, k] 的時候,只需要檢查其中最大的數是不是 k 就可以了。
class
solution
return ans;}}
;
冥想第十九天
不能怪自己多心,畢竟出現不舒服的感覺是因為大腦太關切自己的身體了。一點也不想讓它受刺激。今天出來玩了,早上做了體檢。又帶著小妞妞出來打了預防針,後又跟著朋友出來滎陽南嶺玩了,到時有點困,告訴自己要接受,好好接受當下 但不反抗,知道是正常的。坐上車後睡了一會,所有的精力都回來了。當和朋友一起回來的時候...
ACM 第十九天
積性函式o n 線性篩,篩素數,u n 尤拉函式 n n 1 vis 0 vis 1 1,mu 1 1,phi 1 1 2 for rg int i 2 i n i 7else mu k mu i phi k phi i phi prime j 8 9 可以發現,線性篩分為3部分 1.n本身是素數,...
PYTHON小白 第十九天
python小白 第十九天 1 異常概述 異常機制己經成為衡量一門程式語言是否成熟的標準之一,使用異常處理機制的python程式有更好的容錯性,更加健壯。2 異常處理機制 python的異常處理機制可以讓程式具有極好的容錯性,讓程式更加健壯。當程式執行出現意外情況時,系統會自動生成error物件來通...