LeetCode第 71 場雙周賽題解

2022-09-20 08:30:13 字數 2004 閱讀 5000

題目描述:給你乙個四位整數,讓你重排這個整數中的數字然後分成兩部分,允許有前導\(0\)。問分成的兩部分的十進位制表示的和的最小值。

思路:根據題意模擬即可、

時間複雜度:\(o(1)\)

class solution 

}return res;

}};

題目描述:給你乙個長度為\(n\)的陣列\(nums\),和乙個分界數\(x\),讓你將陣列中小於\(x\)的數字放在所有\(x\)的左邊且不改變其原來的相對順序,將陣列中大於\(x\)的數字放在所有\(x\)的右邊且不改變其原來的相對順序。

思路:根據題意模擬即可。

時間複雜度:\(o(n)\)

class solution 

for(int i = 1 ; i <= cnt ; ++i) res.push_back(pivot);

for(auto num : rs) res.push_back(num);

return res;

}};

題目描述:自己看題目吧

思路:根據題意,將時間先表示成\(m : s\)的形式其中\(s < 60\),注意可能會存在\(m > 99\)的情況,需要特判。然後表示成\(4\)位,去除前導\(0\)之後計算價值。然後再\(m \neq 0 , s \leq 39\)的情況下表示\(m - 1 : s + 60\)。在算一次價值。二者取最小即可。

時間複雜度:\(o(1)\)

class solution 

return res;

};int m = targetseconds / 60 , s = targetseconds % 60;

if(m > 99) --m , s += 60;

vectornums(4 , 0);

auto process = [&](vector& nums , int m ,int s);

process(nums , m , s);

int res = solve(nums);

nums = vector(4 , 0);

if(m && s <= 39)

return res;

}};

題目描述:給你乙個長度為\(3 * n\)的陣列\(nums\),讓你刪除其中的\(n\)個,對於刪除後的陣列,定義其前\(n\)個數字的和為\(sum_\),後\(n\)個數字的和為\(sum_\)。求\(sum_ - sum_\)的最小值。

思路:顯然我們要最小化\(sum_\),最大化\(sum_\)。考慮定義分界點\(n - 1 \leq p < 2 *n\)。區間[0 , p]包含第一部分的所有元素,根據貪心策略需要刪除其中\(p - n + 1\)個最大的元素,而區間[p + 1 , 3 * n - 1]包含第二部分的所有元素,根據貪心策略,需要刪除其中$2 * n - p - 1 $個最小的元素。考慮如何維護,對於第一部分,使用乙個大根堆即可;對於第二部分,我們使用兩個multiseta , b分別儲存較小的\(2 * n - p - 1\)個元素和較大的\(n\)個元素,若移動分界點對應的元素在a中存在,則直接刪除,否則在b中刪除該元素,並將a中的最大值加入b中。

時間複雜度:\(o(nlogn)\)

class solution 

multiseta, b;

for (int i = m; i < n; ++i)

else }}

long long res = sum;

for (int i = m; i < 2 * m; ++i)

else

if (nums[i] < heap.top())

res = min(res, sum);

}return res;

}};

leetcode第8場雙周賽

這次雙周賽有意外,第二第三題按照提示返回int會報錯,要返回list 第一題給你乙個字串 s,返回只含 單一字母 的子串個數。示例 1 輸入 aaaba 輸出 8 解釋 只含單一字母的子串分別是 aaa aa a b aaa 出現 1 次。aa 出現 2 次。a 出現 4 次。b 出現 1 次。所以...

leetcode第 24 場雙周賽

給你乙個整數陣列nums。你可以選定任意的正數startvalue 作為初始值。你需要從左到右遍歷nums陣列,並將 startvalue 依次累加上nums陣列中的值。請你在確保累加和始終大於等於 1 的前提下,選出乙個最小的正數作為 startvalue 輸入 nums 3,2,3,4,2 輸出...

leetcode 第27場雙周賽

通過翻轉子陣列使兩個陣列相等 檢查乙個字串是否包含所有長度為k的二進位制子串 課程安排 摘櫻桃 3分 簡單 4分 中等 5分 中等 6分 困難 翻譯下題意,其實就是問我們兩個陣列是否相等,判斷陣列是否相等有很多方法,這邊我直接排序,遍歷一遍看是否有不一樣的元素 陣列排序的複雜度,故為o nlogn ...