LeetCode第69場雙周賽

2022-09-08 21:15:22 字數 1642 閱讀 7395

題目描述:將給定的句子按照題意格式化

思路:根據題意描述即可

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

class solution 

}else

}if(res.size() == 0) res += t;

else res += ' ' + t;

}return res;

}};

題目描述:給你乙個鍊錶,其對應的陣列為\(a\),其長度為\(n\),保證\(n\)為偶數,下標從\(0\)開始,求:

\[\mathop\limits_^ - 1} \

\]思路:將鍊錶轉化成陣列,然後根據題意模擬即可

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

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

class solution 

int res = 0, n = arr.size();

for(int i = 0 ; i < n / 2 ; ++i)

return res;

}};

題目描述:給你\(n\)個長度為\(2\)的字串從中選擇任意個組成回文串,求組成的回文串的最大長度。

思路:使用\(map\)儲存一下前面未使用的字串,對於當前列舉的字串,若它的翻轉字串在\(map\)中,就對答案\(+4\)並將其翻轉字串對應的鍵值減一,否則將其加入\(map\)中,注意若最後還剩餘長度為\(2\)且兩個字元相同的串,則最終答案還應該\(+2\)。

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

class solution 

else

}for(auto ct : cnt)

return res;

}};

題目描述:給你乙個二進位制矩陣,每個格仔要麼是\(0\)表示空, 要麼為\(1\)表示佔據,你需要在講郵票貼在二進位制矩陣中,且滿足以下限制和要求:

若存在乙個放置方案滿足上述條件返回true,否則返回false

思路:首先可以使用二維字首和用於快速判斷乙個矩形中是否存在被佔據的格仔,我們列舉郵票的左上角的位置,若將該郵票放在此處不會產生衝突,則就將該位置置\(1\)(使用乙個新的陣列儲存)。接下來列舉每乙個空格\((i , j)\),查詢其所在的位置是否被某張郵票覆蓋,也即判斷子矩陣\((max(1 , i - h + 1) , max(1 , j - w + 1)) \to (i , j)\) 內是否存在標記為\(1\)的點。此時只需對剛剛的標記陣列再做一遍二維字首和就可以對於每乙個空格進行\(o(1)\)判斷。

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

空間複雜度:\(o(nm)\)

class solution 

}//列舉郵票的左上角,因為只是問可行,不要求使用最少的 ,所以若當前左上角可以貼就貼上,否則不貼

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

for(int j = 1 ; j <= m ; ++j) b[i][j] += b[i - 1][j] + b[i][j - 1] - b[i - 1][j - 1];

}for(int i = 1 ; i <= n ; ++i)

}return true;

}};

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 ...