2202. Maximize the Topmost Element After K Moves

ss
Mar 13, 2022

--

周賽復盤

我覺得我搞錯題意了, 我一直以為這個stack不能為空, 導致花了很多時間在錯誤的方向上

其實他可以為空, 所以我們要去判斷幾項依據

k == 0
k為0的話, 一定就是nums的index為0的值了, 但假設nums裡並沒有值, 我們就要回傳-1
k == 1
k 為1的話, 一定得拿掉nums的第一個數字, 所以nums 若小於1, 就一樣回傳-1
N == 1
如果只有一個數, 那K是不是偶數就很重要, 如果是偶數我們才能拿掉之後再加回來, 不是的話就只能回傳-1

剩下的就是在0 - (k - 1)中選 或是 N > k, 的話選看第k個數夠不夠大

不難, 就是conner case令大家詬病

class Solution {
public:
int maximumTop(vector<int>& nums, int k) {
int n = nums.size();
if(k == 0){
return nums.size() > 0?nums[0]:-1;
}
if(k == 1){
return nums.size() >= 2?nums[1]:-1;
}
if(n == 1){
return k % 2 == 0?nums[0]:-1;
}
int maxValue = INT_MIN;
for(int i = 0; i < k - 1 && i < n;i++){
maxValue = max(maxValue, nums[i]);
}
if(k < n){
maxValue = max(maxValue, nums[k]);
}
return maxValue;
}
};

--

--

ss
ss

No responses yet