日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode 第 31 场双周赛(273/2767,前9.87%,第3次全部通过)

發(fā)布時(shí)間:2024/7/5 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 第 31 场双周赛(273/2767,前9.87%,第3次全部通过) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

    • 1. 比賽結(jié)果
    • 2. 題目
      • 1. LeetCode 5456. 在區(qū)間范圍內(nèi)統(tǒng)計(jì)奇數(shù)數(shù)目 easy
      • 2. LeetCode 5457. 和為奇數(shù)的子數(shù)組數(shù)目 medium
      • 3. LeetCode 5458. 字符串的好分割數(shù)目 medium
      • 4. LeetCode 5459. 形成目標(biāo)數(shù)組的子數(shù)組最少增加次數(shù) hard

1. 比賽結(jié)果

雙周賽題目比較簡(jiǎn)單。第一題沒(méi)仔細(xì)看數(shù)據(jù)范圍,暴力超時(shí)一次,最后一題卡了一會(huì)。繼續(xù)加油!

全國(guó)排名: 273 / 2767,9.87%;全球排名: 819 / 8677,9.44%

2. 題目

1. LeetCode 5456. 在區(qū)間范圍內(nèi)統(tǒng)計(jì)奇數(shù)數(shù)目 easy

題目鏈接

給你兩個(gè)非負(fù)整數(shù) low 和 high 。請(qǐng)你返回 low 和 high 之間(包括二者)奇數(shù)的數(shù)目

示例 1: 輸入:low = 3, high = 7 輸出:3 解釋:37 之間奇數(shù)數(shù)字為 [3,5,7] 。示例 2: 輸入:low = 8, high = 10 輸出:1 解釋:810 之間奇數(shù)數(shù)字為 [9] 。提示: 0 <= low <= high <= 10^9

解題:

  • 超時(shí)解,數(shù)據(jù)太大了,不能模擬
class Solution { public:int countOdds(int low, int high) {int s = 0;for(int i = low; i <= high; ++i)if(i%2==1)s++;return s;} };
  • 正解,按奇偶討論
class Solution { public:int countOdds(int low, int high) {if(low%2 || high%2)return (high-low)/2+1;elsereturn (high-low)/2;} };

2. LeetCode 5457. 和為奇數(shù)的子數(shù)組數(shù)目 medium

題目鏈接

給你一個(gè)整數(shù)數(shù)組 arr 。請(qǐng)你返回和為 奇數(shù)子數(shù)組數(shù)目

由于答案可能會(huì)很大,請(qǐng)你將結(jié)果對(duì) 10^9 + 7 取余后返回。

示例 1: 輸入:arr = [1,3,5] 輸出:4 解釋:所有的子數(shù)組為 [[1],[1,3],[1,3,5],[3],[3,5],[5]] 。 所有子數(shù)組的和為 [1,4,9,3,8,5]. 奇數(shù)和包括 [1,9,3,5] ,所以答案為 4 。示例 2 : 輸入:arr = [2,4,6] 輸出:0 解釋:所有子數(shù)組為 [[2],[2,4],[2,4,6],[4],[4,6],[6]] 。 所有子數(shù)組和為 [2,6,12,4,10,6] 。 所有子數(shù)組和都是偶數(shù),所以答案為 0 。示例 3: 輸入:arr = [1,2,3,4,5,6,7] 輸出:16示例 4: 輸入:arr = [100,100,99,99] 輸出:4示例 5: 輸入:arr = [7] 輸出:1提示: 1 <= arr.length <= 10^5 1 <= arr[i] <= 100

解題:

  • 記錄和為奇數(shù)、偶數(shù)的次數(shù),注意初始時(shí)偶數(shù)次數(shù)為1個(gè)(和為0)
class Solution { public:int numOfSubarrays(vector<int>& arr) {int odd = 0, even = 1, ans = 0, sum = 0, i;for(i = 0; i < arr.size(); ++i){sum += arr[i];if(sum&1)//奇數(shù){ans += even%1000000007;odd++;}else{ans += odd%1000000007;even++;}ans %= 1000000007;}return ans;} };

3. LeetCode 5458. 字符串的好分割數(shù)目 medium

題目鏈接

給你一個(gè)字符串 s ,一個(gè)分割被稱為 「好分割」 當(dāng)它滿足:將 s 分割成 2 個(gè)字符串 p 和 q ,它們連接起來(lái)等于 s 且 p 和 q 中不同字符的數(shù)目相同

請(qǐng)你返回 s 中好分割的數(shù)目。

示例 1: 輸入:s = "aacaba" 輸出:2 解釋:總共有 5 種分割字符串 "aacaba" 的方法,其中 2 種是好分割。 ("a", "acaba") 左邊字符串和右邊字符串分別包含 1 個(gè)和 3 個(gè)不同的字符。 ("aa", "caba") 左邊字符串和右邊字符串分別包含 1 個(gè)和 3 個(gè)不同的字符。 ("aac", "aba") 左邊字符串和右邊字符串分別包含 2 個(gè)和 2 個(gè)不同的字符。 這是一個(gè)好分割。 ("aaca", "ba") 左邊字符串和右邊字符串分別包含 2 個(gè)和 2 個(gè)不同的字符。 這是一個(gè)好分割。 ("aacab", "a") 左邊字符串和右邊字符串分別包含 3 個(gè)和 1 個(gè)不同的字符。示例 2: 輸入:s = "abcd" 輸出:1 解釋:好分割為將字符串分割成 ("ab", "cd") 。示例 3: 輸入:s = "aaaaa" 輸出:4 解釋:所有分割都是好分割。示例 4: 輸入:s = "acbadbaada" 輸出:2提示: s 只包含小寫(xiě)英文字母。 1 <= s.length <= 10^5

解題:

  • 先左邊1個(gè)字符計(jì)數(shù),右邊剩下的字符計(jì)數(shù)
  • 雙指針遍歷字符串,左邊+,右邊-,種類相同時(shí) ans+1
class Solution { public:int numSplits(string s) {unordered_map<char,int> l, r;int i, ans = 0;l[s[0]] = 1;for(i = 1; i < s.size(); ++i)r[s[i]]++;for(i = 1; i < s.size(); ++i){if(l.size() == r.size())ans++;l[s[i]]++;if(--r[s[i]] == 0)r.erase(s[i]);}return ans;} };

4. LeetCode 5459. 形成目標(biāo)數(shù)組的子數(shù)組最少增加次數(shù) hard

題目鏈接

給你一個(gè)整數(shù)數(shù)組 target 和一個(gè)數(shù)組 initial ,initial 數(shù)組與 target 數(shù)組有同樣的維度,且一開(kāi)始全部為 0

請(qǐng)你返回從 initial 得到 target 的最少操作次數(shù),每次操作需遵循以下規(guī)則:

  • 在 initial 中選擇 任意 子數(shù)組,并將子數(shù)組中每個(gè)元素增加 1

答案保證在 32 位有符號(hào)整數(shù)以內(nèi)。

示例 1: 輸入:target = [1,2,3,2,1] 輸出:3 解釋:我們需要至少 3 次操作從 intial 數(shù)組得到 target 數(shù)組。 [0,0,0,0,0] 將下標(biāo)為 04 的元素(包含二者)加 1[1,1,1,1,1] 將下標(biāo)為 13 的元素(包含二者)加 1[1,2,2,2,1] 將下表為 2 的元素增加 1[1,2,3,2,1] 得到了目標(biāo)數(shù)組。示例 2: 輸入:target = [3,1,1,2] 輸出:4 解釋:(initial)[0,0,0,0] -> [1,1,1,1] -> [1,1,1,2] -> [2,1,1,2] -> [3,1,1,2] (target) 。示例 3: 輸入:target = [3,1,5,4,2] 輸出:7 解釋:(initial)[0,0,0,0,0] -> [1,1,1,1,1] -> [2,1,1,1,1] -> [3,1,1,1,1] -> [3,1,2,2,2] -> [3,1,3,3,2] -> [3,1,4,4,2] -> [3,1,5,4,2] (target)。示例 4: 輸入:target = [1,1,1,1] 輸出:1提示: 1 <= target.length <= 10^5 1 <= target[i] <= 10^5

解題:

  • 數(shù)組末尾添加個(gè)最小值0
  • 遍歷數(shù)組遇到下降的,次數(shù)+下降的差值
class Solution { public:int minNumberOperations(vector<int>& target) {int s = 0;target.push_back(0);for(int i = 1; i < target.size(); ++i){if(target[i-1] > target[i])s += target[i-1]-target[i];}return s;} };

我的CSDN博客地址 https://michael.blog.csdn.net/

長(zhǎng)按或掃碼關(guān)注我的公眾號(hào)(Michael阿明),一起加油、一起學(xué)習(xí)進(jìn)步!

總結(jié)

以上是生活随笔為你收集整理的LeetCode 第 31 场双周赛(273/2767,前9.87%,第3次全部通过)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。