LeetCode 2091. 从数组中移除最大值和最小值(一次遍历)
文章目录
- 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. 从数组中移除最大值和最小值(一次遍历)相关推荐
- 5940. 从数组中移除最大值和最小值
5940. 从数组中移除最大值和最小值 给你一个下标从 0 开始的数组 nums ,数组由若干 互不相同 的整数组成. nums 中有一个值最小的元素和一个值最大的元素.分别称为 最小值 和 最大值 ...
- 如何获取NumPy数组中N个最大值的索引?
本文翻译自:How do I get indices of N maximum values in a NumPy array? NumPy proposes a way to get the ind ...
- (c语言)编程输出二维数组中元素的最大值,要求用指针实现。
(c语言)编程输出二维数组中元素的最大值,要求用指针实现. #include<stdio.h> #include<stdlib.h> #define N 6 //行数 #def ...
- code第一部分数组:从有序数组中移除重复的数据
code第一部分数组:从有序数组中移除重复的数据 第二题 从有序数组中移除重复的数据,但是可以保留2个重复的数. For example, Given sorted array A = [1,1,1, ...
- 按如下函数原型编程从键盘输入一个m行n列的二维数组,然后计算数组中元素的最大值及其所在的行列下标值。其中,m和n的值由用户键盘输入。已知m和n的值都不超过10。
题目:按如下函数原型编程从键盘输入一个m行n列的二维数组,然后计算数组中元素的最大值及其所在的行列下标值.其中,m和n的值由用户键盘输入.已知m和n的值都不超过10. void InputArray( ...
- python pop() ,如何在Python的列表或数组中移除元素
python pop() ,如何在Python的列表或数组中移除元素 在本文中,你将学习如何使用Python内置的 pop() 方法,最后,你将知道如何使用 pop() 从 Python 中的列表中删 ...
- Python练习——二维数组中每行最大值和每行和
Python练习--二维数组中每行最大值和每行和 求一个3*3二维数组中每行的最大值和每行的和. 输入格式: 在一行中输入9个小于100的整数,其间各以一个空格间隔 输出格式: 输出3行3列的二维数组 ...
- C语言数组练习-计算数组中元素的最大值及其所在的行列下标值
要求:按如下函数原型编程从键盘输入一个m行n列的二维数组,然后计算数组中元素的最大值及其所在的行列下标值.其中m和n的值由用户键盘输入.已知m和n的值都不超过10. ----------------- ...
- 找出整形数组中的元素最大值。
// 121218 第八章例8.4.cpp : 定义控制台应用程序的入口点. // /* * Copyright (c) 2012, 烟台大学计算机学院 * All rights reserved. ...
最新文章
- 【转】UIColor对颜色的自定义
- mysql添加外键的时候报错_mysql处理添加外键时 error 150 问题
- C++ Unicode和ANSII转换
- PHP随机静态页面生成系统源码雨尘SEO系统
- iOS内存管理学习笔记二
- PUN☀️三、服务器大厅、服务器房间
- 使用opencv进行车牌提取及识别
- HTML5物流大数据服务平台后台模板
- 鸿蒙熔炉是真实存在的吗,古董局中局父辛爵是真的吗 父辛爵真实存在国内仅有两件...
- 共阳极数码管显示0~9_《显示器件应用分析精粹》之(3)数码管静态显示
- 开源项目——小Q聊天机器人V1.2
- 13种权重的计算方法
- JAVA复习:8进制与16进制
- jest 客户端 实现 Sliced+Scroll并行查询
- vue 身份证校验、识别性别/生日/年龄
- 51CTO专访人人网黄晶:WEB开发需要随需应变(2)
- 程序员生涯快一年感悟
- Oracle分区表索引
- 基于正交投影的实时三维人体姿态估计
- [Info]上海电影院不完全手册
热门文章
- java swingworker_Java中的SwingWorker
- 机器学习之线性回归 损失函数、代价函数、目标函数
- 58到家MySQL军规升级版
- 综合素质计算机考点,教师资格证小学综合素质考点及考试真题:信息处理能力...
- LeetCode283——Move Zeroes(将0移动到数组最后面)
- Hive简单实际操作(二)
- 代理模式——HeadFirst设计模式学习笔记
- 8.0/9.0 Email 设置
- Javascript高级程序设计第二版第七章匿名函数--笔记
- SQL2000数据库中删除“坏表”的方法