5940. 从数组中移除最大值和最小值
5940. 从数组中移除最大值和最小值
给你一个下标从 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 <= 10510^5105
- −105-10^5−105 <= nums[i] <= 10510^5105
- nums 中的整数 互不相同
解题思路
- 统计最大值和最小值所在的下标,因为在这题中,哪个是最大值,哪个是最小值对题目并不影响,因此我们只需要知道左边极值的下标和右边极值的下标即可。
- 共有三种删除方法
- 从数组的 前面 移除元素,直到把右边的极值移除
- 从数组的 后面 移除元素,直到把左边的极值移除
- 从数组的两边一齐移除元素,直到把左边和右边的极值移除
代码
class Solution {public:int minimumDeletions(vector<int>& nums) {int max_i(0),min_i(0),n=nums.size();for (int i = 1; i < nums.size(); ++i) {if (nums[i]>nums[max_i])max_i=i;if (nums[i]<nums[min_i])min_i=i;}int l=min(max_i,min_i),r=max(max_i,min_i);return min(l+1+n-r,min(r+1,n-l));}
};
5940. 从数组中移除最大值和最小值相关推荐
- LeetCode 2091. 从数组中移除最大值和最小值(一次遍历)
文章目录 1. 题目 2. 解题 1. 题目 给你一个下标从 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. ...
最新文章
- 新版蚂蚁网有抄袭怪兽吗?
- Linq to sql与EF零碎知识点总结
- Anaconda 查找安装的环境,以及移除旧环境命令
- P4313 文理分科 网络流
- java 6789的10000次方,用MSSQL计算2的10000次方
- java 图片转成base64编码_java语言中如何将一个图片转换为base64编码的数据呢?
- php网页源码学生请假考勤管理系统mysql数据库web结构html布局计算机软件工程
- ActionForm工作原理
- 魅族Android版本,魅族Flyme安卓版本
- 截止失真放大电路_模电必学基本放大电路
- 源码解析zxing条码边距及总宽度计算规则,附java使用zxing生成条形码,并去除条码两边空白
- 同花顺股票交易接口 正确用法
- Python PEP8 代码规范常见问题及解决方法
- 归并排序实现思想及代码模板
- 师生使用计算机不得,师生文明上网行为规范
- 用c语言编写程序,求∑(k=1~100)k+∑(k=1~50)k2,c语言程序,求(100∑k=1 k)+(50∑k=1 k^2)+(10∑k=1 1/k) 这...
- Note 7陨落下的骨诺牌效应,三星从此走向衰亡将韩国经济拖下悬崖?
- 新网站需要多少时间才有收录量?
- excel一列多行数据合并、一行多列合并
- Windows8 Metro快捷键 | Win8迷