周賽復盤
我覺得我搞錯題意了, 我一直以為這個stack不能為空, 導致花了很多時間在錯誤的方向上
其實他可以為空, 所以我們要去判斷幾項依據
k == 0
k為0的話, 一定就是nums的index為0的值了, 但假設nums裡並沒有值, 我們就要回傳-1k == 1
k 為1的話, 一定得拿掉nums的第一個數字, 所以nums 若小於1, 就一樣回傳-1N == 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;
}
};