題目描述:給你乙個陣列\(nums\)和乙個整數\(x\),若\(x\)在陣列中就將\(x\)乘以\(2\),否則返回\(x\)的值。
思路:使用map
儲存陣列中的值,然後根據題意模擬即可
時間複雜度:\(o(nlogn)\)
class solution
};
題目描述:給你乙個只有01
的陣列,將陣列分成兩部分,左邊部分的分數為0
的個數,右邊部分為1
的個數,分組得分為左右部分的分數之和,求所有使得分組得分最高的下標。
思路:比較簡單的dp
,根據題意模擬即可。
時間複雜:\(o(n)\)
class solution
for(int i = n ; i >= 1 ; --i)
vectorres;
int max = 0;
for(int i = 1 ; i <= n + 1; ++i)
}return res;
}};
題目描述:給定長度為\(n\)的字串\(s\),求其長度為\(k\)的所有子串中滿足等式:
\[\sum\limits_^ t_i \times p^ \% mod = hashvalue
\]且出現最早的子串。其中\(t\)表示長度為\(k\)的子串,字元\(t_i\)的整數值為\(t_i - 'a' + 1\)。
思路:賽時思路為:考慮到下列等式:
\[s_i*p^0 + s_*p^1 + ..+ s_*p^\\
= \frac + s_*p^ + ..+ s_*p^}}
\]那麼我們可以將\(b^i *hashvalue\) 作為等式的右邊,在取模的情況下檢驗左右兩邊是否相等。但將分母乘過去再取模可能會存在hash
衝突,比較保險的做法是求\(b^i\)的逆元,但其逆元可能不存在,我當時的做法時在檢驗到相等的時候,再代入檢驗一遍,**如下:
class solution
//for(auto ha : has) cout << ha <<" " ;
//cout << endl;
for(int i = k ; i <= n; ++i)
if(tmp == hashvalue) return s.substr(i - k , k);}}
return "";
}};
上述**是可以被卡掉的。
後來考慮到字串hash
的式子:
\[hash = \sum\limits_^ s_i * p^
\]那我們將字串\(s\)轉置一下,那麼上式就變成了
\[hash = \sum\limits_^ t_i * p^\;\;t_i = s_
\]跟題目所求式子相同,故可以將字串\(s\)轉置,然後預處理其字串hash
值,然後根據該值找到相對應的答案。
時間複雜度:\(o(n)\)
class solution
auto gethash = [&](int lr , int rs)->int;
int idx = 0;
for(int i = 1 ; i <= n - k + 1 ; ++i)
string res = s.substr(idx - 1 , k);
reverse(res.begin() , res.end());
return res;
}};
題目描述:自己看題目吧,雖然題目描述讀起來怪怪的。
思路:考慮到每個字串中的每種字元最多出現一次,所以考慮將字串使用陣列表示,例如字串ab
,可以用3
表示。然後每乙個字串當做乙個點,我們根據題目的規則去列舉其能產生的點,若列舉到的點存在,那麼就將這兩個點所對應的連通塊合併,故其中需要使用並查集。最後的答案就是連通塊的數量和最大的連通塊中點的數量。注意到可能存在相同的字串,需要特判。
時間複雜度:\(o(26^2n)\)
\(n\)為字串的數量。
class solution
auto find = [&] (auto find , int x)->int;
auto cal = [&](string& s)->int;
auto solve = [&](int x, int idx)->void
mp[x] = idx;
for(int i = 0 ; i < 26 ; ++i)
for(int i = 0 ; i < 26 ; ++i)
}return ;
};for(int i = 1 ; i <= n ; ++i)
vectorres(2 , 0);
for(int i = 1 ; i <= n ; ++i)
return res;
}};
leetcode 第132場周賽
愛麗絲和鮑勃一起玩遊戲,他們輪流行動。愛麗絲先手開局。最初,黑板上有乙個數字n。在每個玩家的回合,玩家需要執行以下操作 如果玩家無法執行這些操作,就會輸掉遊戲。只有在愛麗絲在遊戲中取得勝利時才返回true,否則返回false。假設兩個玩家都以最佳狀態參與遊戲。示例 1 輸入 2輸出 true解釋 愛...
leetcode周賽 第176場
題目描述 給你乙個 m n 的矩陣 grid,矩陣中的元素無論是按行還是按列,都以非遞增順序排列。請你統計並返回 grid 中 負數 的數目。示例 1 輸入 grid 4,3,2,1 3,2,1,1 1,1,1,2 1,1,2,3 輸出 8 解釋 矩陣中共有 8 個負數。示例 2 輸入 grid 3...
leetcode 第 180 場周賽
大佬都是3 5分鐘一題,而我10分鐘一題,最後一題還不會。qaq 5356.矩陣中的幸運數 給你乙個m n的矩陣,矩陣中的數字各不相同。請你按任意順序返回矩陣中的所有幸運數。幸運數是指矩陣中滿足同時下列兩個條件的元素 class solution object def luckynumbers se...