文章目录

  • 1. 题目
  • 2. 解题

1. 题目

给你一个下标从 0 开始的数组 nums ,数组由若干 互不相同 的整数组成。

nums 中有一个值最小的元素和一个值最大的元素。分别称为 最小值最大值 。你的目标是从数组中移除这两个元素。

一次 删除 操作定义为从数组的 前面 移除一个元素或从数组的 后面 移除一个元素。

返回将数组中最小值和最大值 移除需要的最小删除次数

示例 1:
输入:nums = [2,10,7,5,4,1,8,6]
输出:5
解释:
数组中的最小元素是 nums[5] ,值为 1 。
数组中的最大元素是 nums[1] ,值为 10 。
将最大值和最小值都移除需要从数组前面移除 2 个元素,
从数组后面移除 3 个元素。
结果是 2 + 3 = 5 ,这是所有可能情况中的最小删除次数。示例 2:
输入:nums = [0,-4,19,1,8,-2,-3,5]
输出:3
解释:
数组中的最小元素是 nums[1] ,值为 -4 。
数组中的最大元素是 nums[2] ,值为 19 。
将最大值和最小值都移除需要从数组前面移除 3 个元素。
结果是 3 ,这是所有可能情况中的最小删除次数。 示例 3:
输入:nums = [101]
输出:1
解释:
数组中只有这一个元素,那么它既是数组中的最小值又是数组中的最大值。
移除它只需要 1 次删除操作。提示:
1 <= nums.length <= 10^5
-10^5 <= nums[i] <= 10^5
nums 中的整数 互不相同

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/removing-minimum-and-maximum-from-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 记录两个极值的位置
  • 只有3中拿法,都从左边出,都从右边出,分别从左右出
class Solution {public:int minimumDeletions(vector<int>& nums) {if(nums.size() <= 2) return nums.size();int n = nums.size(), MIN = INT_MAX, MAX = INT_MIN;int minidx = -1, maxidx = -1;for(int i = 0; i < n; ++i){if(nums[i] > MAX){maxidx = i;MAX = nums[i];}if(nums[i] < MIN){minidx = i;MIN = nums[i];}}int a = min(minidx, maxidx), b = max(minidx, maxidx);// 都从左边拿 b+1// 都从右边拿 n-a// 分别从左右拿 a+1 + n-breturn min(b+1, min(n-a, a+1+n-b));}
};

116 ms 86.2 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 2091. 从数组中移除最大值和最小值(一次遍历)相关推荐

  1. 5940. 从数组中移除最大值和最小值

    5940. 从数组中移除最大值和最小值 给你一个下标从 0 开始的数组 nums ,数组由若干 互不相同 的整数组成. nums 中有一个值最小的元素和一个值最大的元素.分别称为 最小值 和 最大值 ...

  2. 如何获取NumPy数组中N个最大值的索引?

    本文翻译自:How do I get indices of N maximum values in a NumPy array? NumPy proposes a way to get the ind ...

  3. (c语言)编程输出二维数组中元素的最大值,要求用指针实现。

    (c语言)编程输出二维数组中元素的最大值,要求用指针实现. #include<stdio.h> #include<stdlib.h> #define N 6 //行数 #def ...

  4. code第一部分数组:从有序数组中移除重复的数据

    code第一部分数组:从有序数组中移除重复的数据 第二题 从有序数组中移除重复的数据,但是可以保留2个重复的数. For example, Given sorted array A = [1,1,1, ...

  5. 按如下函数原型编程从键盘输入一个m行n列的二维数组,然后计算数组中元素的最大值及其所在的行列下标值。其中,m和n的值由用户键盘输入。已知m和n的值都不超过10。

    题目:按如下函数原型编程从键盘输入一个m行n列的二维数组,然后计算数组中元素的最大值及其所在的行列下标值.其中,m和n的值由用户键盘输入.已知m和n的值都不超过10. void InputArray( ...

  6. python pop() ,如何在Python的列表或数组中移除元素

    python pop() ,如何在Python的列表或数组中移除元素 在本文中,你将学习如何使用Python内置的 pop() 方法,最后,你将知道如何使用 pop() 从 Python 中的列表中删 ...

  7. Python练习——二维数组中每行最大值和每行和

    Python练习--二维数组中每行最大值和每行和 求一个3*3二维数组中每行的最大值和每行的和. 输入格式: 在一行中输入9个小于100的整数,其间各以一个空格间隔 输出格式: 输出3行3列的二维数组 ...

  8. C语言数组练习-计算数组中元素的最大值及其所在的行列下标值

    要求:按如下函数原型编程从键盘输入一个m行n列的二维数组,然后计算数组中元素的最大值及其所在的行列下标值.其中m和n的值由用户键盘输入.已知m和n的值都不超过10. ----------------- ...

  9. 找出整形数组中的元素最大值。

    // 121218 第八章例8.4.cpp : 定义控制台应用程序的入口点. // /* * Copyright (c) 2012, 烟台大学计算机学院 * All rights reserved. ...

最新文章

  1. 【转】UIColor对颜色的自定义
  2. mysql添加外键的时候报错_mysql处理添加外键时 error 150 问题
  3. C++ Unicode和ANSII转换
  4. PHP随机静态页面生成系统源码雨尘SEO系统
  5. iOS内存管理学习笔记二
  6. PUN☀️三、服务器大厅、服务器房间
  7. 使用opencv进行车牌提取及识别
  8. HTML5物流大数据服务平台后台模板
  9. 鸿蒙熔炉是真实存在的吗,古董局中局父辛爵是真的吗 父辛爵真实存在国内仅有两件...
  10. 共阳极数码管显示0~9_《显示器件应用分析精粹》之(3)数码管静态显示
  11. 开源项目——小Q聊天机器人V1.2
  12. 13种权重的计算方法
  13. JAVA复习:8进制与16进制
  14. jest 客户端 实现 Sliced+Scroll并行查询
  15. vue 身份证校验、识别性别/生日/年龄
  16. 51CTO专访人人网黄晶:WEB开发需要随需应变(2)
  17. 程序员生涯快一年感悟
  18. Oracle分区表索引
  19. 基于正交投影的实时三维人体姿态估计
  20. [Info]上海电影院不完全手册

热门文章

  1. java swingworker_Java中的SwingWorker
  2. 机器学习之线性回归 损失函数、代价函数、目标函数
  3. 58到家MySQL军规升级版
  4. 综合素质计算机考点,教师资格证小学综合素质考点及考试真题:信息处理能力...
  5. LeetCode283——Move Zeroes(将0移动到数组最后面)
  6. Hive简单实际操作(二)
  7. 代理模式——HeadFirst设计模式学习笔记
  8. 8.0/9.0 Email 设置
  9. Javascript高级程序设计第二版第七章匿名函数--笔记
  10. SQL2000数据库中删除“坏表”的方法