久違的做一下題目,一樣也是中等難度~
標題一看過去就看到數位邏輯的老朋友XOR(異或),而題目主要是在說算出給定值queries範圍內所有值的異或。
所以我就想這還不簡單!直接範圍內異或後塞進去傳會就好,結果跑出來所用的時間非常高
(原程式)
標題一看過去就看到數位邏輯的老朋友XOR(異或),而題目主要是在說算出給定值queries範圍內所有值的異或。
所以我就想這還不簡單!直接範圍內異或後塞進去傳會就好,結果跑出來所用的時間非常高
(原程式)
於是我去看了解析其它大佬都是怎麼做的,看到說如果用我這個方法的話時間複雜度會非常高,
為O(n×m),其中 n 是查詢範圍的大小,m 是查詢的次數。
而大佬用的方法是使用 [前綴異或陣列] 提前計算出陣列的部分異或值,讓查詢區間的異或值可以在 O(1) 的時間內求得,總的時間複雜度為 O(n+m)。
O(n×m)直接變成O(n+m)這時間速度也差太多了吧 !! 那這前綴異或陣列是什麼?
我也不知道
所以我去問了偉大的chatgpt,chatgpt是這麼說的
工殺毀
我笨笨的聽不懂,但運算式還是看得懂的,所以我直接拿過來用
(更新後程式)
這運算時間直接從541ms變成2ms差得有夠多!!
總結 : 我又再次見識到了新的東西,雖然還沒弄明白。
(超醜筆記)