leetcode1658.将x见到0的最小操作数
题目大意
解题思路
分析题意,实际上是从数组的左半部分和右半部分分别取出一部分,两部分的和为x即可,找到最短的组合.
将nums从左累加,得到leftacc,将nums从右累加,得到rightacc. 两个指针left指向leftacc的左端点,right指向rightacc的左端点.
若leftacc[left]+rightacc[right] == x:表示符合条件,记录一下;
若< x:表示需要加大当前数组,只能让left移动一位;
若>x:表示需要减小当前数组,只能让right移动一位;
class Solution {public:int minOperations(vector<int>& nums, int x) {int length = nums.size();vector<int> leftAcc(length + 1, 0);vector<int> rightAcc(length + 1, 0);for (int i = 0; i < length; ++i) {leftAcc[i + 1] = leftAcc[i] + nums[i];}for (int i = length - 1; i >= 0; --i) {rightAcc[i] = rightAcc[i + 1] + nums[i];}int res = INT_MAX, left = 0, right = 0;while (left <= right && right <= length) {if (leftAcc[left] + rightAcc[right] == x) {res = min(res, length - right + left);++right;++left;}else if (leftAcc[left] + rightAcc[right] < x) {++left;}else {++right;}}return res == INT_MAX ? -1 : res;}
};
leetcode1658.将x见到0的最小操作数相关推荐
- Leetcode-1658. 将 x 减到 0 的最小操作数
链接 1658. 将 x 减到 0 的最小操作数 题目 给你一个整数数组 nums 和一个整数 x .每一次操作时,你应当移除数组 nums 最左边或最右边的元素,然后从 x 中减去该元素的值.请注意 ...
- LeetCode 1658. 将 x 减到 0 的最小操作数
1658. 将 x 减到 0 的最小操作数 给你一个整数数组 nums 和一个整数 x .每一次操作时,你应当移除数组 nums 最左边或最右边的元素,然后从 x 中减去该元素的值.请注意,需要 修改 ...
- Leecode 1658. 将 x 减到 0 的最小操作数 滑动窗口
原题链接:Leecode 1658. 将 x 减到 0 的最小操作数 自己写的代码: class Solution {public:int minOperations(vector<int> ...
- LeetCode 1658. 将 x 减到 0 的最小操作数(哈希)
文章目录 1. 题目 2. 解题 1. 题目 给你一个整数数组 nums 和一个整数 x .每一次操作时,你应当移除数组 nums 最左边或最右边的元素,然后从 x 中减去该元素的值.请注意,需要 修 ...
- LeetCode 2033. 获取单值网格的最小操作数(贪心)
文章目录 1. 题目 2. 解题 1. 题目 给你一个大小为 m x n 的二维整数网格 grid 和一个整数 x . 每一次操作,你可以对 grid 中的任一元素 加 x 或 减 x . 单值网格 ...
- LeetCode 1769. 移动所有球到每个盒子所需的最小操作数(前缀和)
文章目录 1. 题目 2. 解题 1. 题目 有 n 个盒子.给你一个长度为 n 的二进制字符串 boxes ,其中 boxes[i] 的值为 '0' 表示第 i 个盒子是 空 的,而 boxes[i ...
- LeetCode 1551. 使数组中所有元素相等的最小操作数(等差数列)
文章目录 1. 题目 2. 解题 1. 题目 存在一个长度为 n 的数组 arr ,其中 arr[i] = (2 * i) + 1 ( 0 <= i < n ). 一次操作中,你可以选出两 ...
- 最小操作数,木块砌墙问题
第三十二章.最小操作数 题目详情如下: 给定一个单词集合Dict,其中每个单词的长度都相同.现从此单词集合Dict中抽取两个单词A.B,我们希望通过若干次操作把单词A变成单词B,每次操作可以改变单词的 ...
- 【周赛-简单】5488. 使数组中所有元素相等的最小操作数
存在一个长度为 n 的数组 arr ,其中 arr[i] = (2 * i) + 1 ( 0 <= i < n ). 一次操作中,你可以选出两个下标,记作 x 和 y ( 0 <= ...
最新文章
- R语言ggplot2可视化:ggplot2可视化散点图并使用geom_mark_ellipse函数在数据簇或数据分组的数据点周围添加椭圆(ellipse)进行注释(对椭圆包围的区域进行着色为阴影区域)
- shell 中引用参数总结
- 【记忆断层、记忆裂痕】
- SpringIOC概述
- mysql获取一个表的数据作为值插入_请问如何在mysql中得到一个即将插入数据表中的那条数据的id值(id自增长)?...
- d3.js 搭建 d3-force-directed-graph 例子
- Python爬虫:用BeautifulSoup进行NBA数据爬取
- Mysql Workbench中EER Diagram逆向生成表
- 《Java程序员,上班那点事儿》 - 书摘精要
- SQLAlchemy 基础知识 - (autoflush 和 autocommit)(relationship 和 backref)(flask migrate迁移数据)
- Python3入门机器学习经典算法与应用 第3章 Numpy数组的合并与分割
- paip.提升用户体验----置顶菜单
- 金税盘、税控盘、税务UKey快速批量抄税清卡的一种方法分享
- BZOJ 2759 一个动态树好题(Link-Cut Tree+数学)
- 几种高效电路分析方法
- OTA 差分升级包的制作
- 2021年HSP律所代理品牌侵权案件合集,赶紧查看避免踩坑
- tensorflow2.4使用GooleNet实现识别植物花朵图像项目
- PHP网站地图生成类
- ij idea(2021)的jdk版本可能和本地的有冲突
热门文章
- 2020年3月中国编程语言排行榜
- 原创小说 - 爱人失踪(连载 中部)
- python的歌曲评论数据分析_用Python分析44万条数据,揭秘如何成为网易云音乐评论区的网红段子手...
- Unity+Android 打开安卓文件管理器,并拿到文件的真实路径
- 如何使用Erdas进行去霾处理
- 五分钟教你屏蔽百度广告
- springboot连接redis 没有权限 io.lettuce.core.RedisCommandExecutionException: NOAUTH Authentication requir
- Linux之文件共享
- 什么是SaaS? 定义软件即服务
- c语言马青公式计算圆周率,数学圆周率计算马青公式π/4=4arctan1/5-arctan1/239如何得出的?...