前兩題簡單。
第三題乙個模擬,容易邊界處理不好。
第四題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...