寒假刷題打卡第十九天 陣列和矩陣

2021-10-19 14:37:04 字數 1834 閱讀 3633

錯誤的集合

最開始的想法是排序。但是

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物件來通...