Leetcode 第243場周賽

2022-09-07 04:45:10 字數 1662 閱讀 8376

前兩題簡單。

第三題乙個模擬,容易邊界處理不好。

第四題dp,卡精度。

直接算就行。

class solution 

int x2 = 0;

for(auto c:secondword)

int x3 = 0;

for(auto c:targetword)

return x1 + x2 == x3;

}};

正負要分情況討論。

從左向右插入,找第乙個比自己小,或者比自己大的位置。

string insert的api總是記不住:

// 這兩個用的比較多

區別就是單位元組和字串,前者可以重重複count次字元,後者就是直接插入乙個字串。

// insert(size_type index, size_type count, char ch)

s.insert(0, 1, 'e');

assert("exmplr" == s);

// insert(size_type index, const char* s)

s.insert(2, "e");

assert("exemplr" == s);

**:

class solution 

}} else }}

if(tar_index == nn) n.push_back(x + '0');

else n.insert(tar_index, 1, x + '0');

return n;

}};

大概思路是維護兩個堆,第乙個是可以用的伺服器(idle),第二個是正在被使用的伺服器(busy)。兩邊來回對調。

這個題沒必要自定義排序,c++pair是自帶排序的,先比較第乙個,再比較第二個。所以小頂堆用greater<>或者大頂堆用less<>就可以了。

資料存的分別是:idle存權值w和下標idx,busy存等待時間t和idx。兩邊交換依靠idx唯一確定伺服器。

然後是注意考慮乙個堆為空的情況。

最後是時間的更新,不用迴圈每次+1,只要分情況就可以:

class solution 

int cur_time = 0;

vectorret(m, 0);

int i = 0;

while(i < m)

while(i < m && cur_time >= i && !idle_server_pool.empty())

}return ret;

}};

這個題是乙個中等難度的dp

題解講的很好,理解起來也不難。

其中有三個點比較難

下面**的注釋,是兩種特殊情況,即跳躍次數為0和跳躍次數為1的情況。轉移時必須注意。

初始化的問題,全部為int_max。但是dp[0][0]應該是0

卡精度的問題,eps的使用方法

**

class solution 

if(j != i)}}

for(int j = 0 ; j <= n ; ++j)

return -1;

}};

LeetCode第243場周賽

class solution return ans bool issumequal string firstword,string secondword,string targetword class solution if i n.size else else if i n.size else 根...

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