Leetcode每日一题 —— 2091. 从数组中移除最大值和最小值

魔法师 2026-08-30 08:58 1



思路


今天的题应该算简单题。最优的可能删除方式只有三种,只从左边删、只从右边删、从两头删。

所以只要找到最小值和最大值的坐标,然后从以上三种方式中找最优的即可。


代码


class Solution {
public int minimumDeletions(int[] nums) {
int n = nums.length;
int idxMn = 0, idxMx = 0;
int mn = nums[0], mx = nums[0];
for (int i = 1; i < n; i++) {
if (nums[i] < mn) {
idxMn = i;
mn = nums[i];
}
if (nums[i] > mx) {
idxMx = i;
mx = nums[i];
}
}
int left = Math.min(idxMn, idxMx);
int right = Math.max(idxMn, idxMx);
return Math.min(left + 1 + n - right, Math.min(right + 1, n - left));
}
}
最新回复 (1)
  • Lvvvv 08-30 10:04
    1

    可以归为简单题。


    class Solution {
    public:
    int minimumDeletions(vector<int>& nums) {
    int pmax = 0, pmin = 0;
    int n = nums.size();
    for(int i = 0; i < n; i++) {
    if(nums[i] > nums[pmax]) {
    pmax = i;
    } else if(nums[i] < nums[pmin]) {
    pmin = i;
    }
    }
    if(pmin == pmax) {
    return 1;
    } else if(pmin > pmax) {
    swap(pmin,pmax);
    }
    return min({pmin + 1 + n - pmax,pmax + 1,n - pmin});
    }
    };
* 帖子来源Linux.do
返回