题目大意

解题思路

分析题意,实际上是从数组的左半部分和右半部分分别取出一部分,两部分的和为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的最小操作数相关推荐

  1. Leetcode-1658. 将 x 减到 0 的最小操作数

    链接 1658. 将 x 减到 0 的最小操作数 题目 给你一个整数数组 nums 和一个整数 x .每一次操作时,你应当移除数组 nums 最左边或最右边的元素,然后从 x 中减去该元素的值.请注意 ...

  2. LeetCode 1658. 将 x 减到 0 的最小操作数

    1658. 将 x 减到 0 的最小操作数 给你一个整数数组 nums 和一个整数 x .每一次操作时,你应当移除数组 nums 最左边或最右边的元素,然后从 x 中减去该元素的值.请注意,需要 修改 ...

  3. Leecode 1658. 将 x 减到 0 的最小操作数 滑动窗口

    原题链接:Leecode 1658. 将 x 减到 0 的最小操作数 自己写的代码: class Solution {public:int minOperations(vector<int> ...

  4. LeetCode 1658. 将 x 减到 0 的最小操作数(哈希)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个整数数组 nums 和一个整数 x .每一次操作时,你应当移除数组 nums 最左边或最右边的元素,然后从 x 中减去该元素的值.请注意,需要 修 ...

  5. LeetCode 2033. 获取单值网格的最小操作数(贪心)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个大小为 m x n 的二维整数网格 grid 和一个整数 x . 每一次操作,你可以对 grid 中的任一元素 加 x 或 减 x . 单值网格 ...

  6. LeetCode 1769. 移动所有球到每个盒子所需的最小操作数(前缀和)

    文章目录 1. 题目 2. 解题 1. 题目 有 n 个盒子.给你一个长度为 n 的二进制字符串 boxes ,其中 boxes[i] 的值为 '0' 表示第 i 个盒子是 空 的,而 boxes[i ...

  7. LeetCode 1551. 使数组中所有元素相等的最小操作数(等差数列)

    文章目录 1. 题目 2. 解题 1. 题目 存在一个长度为 n 的数组 arr ,其中 arr[i] = (2 * i) + 1 ( 0 <= i < n ). 一次操作中,你可以选出两 ...

  8. 最小操作数,木块砌墙问题

    第三十二章.最小操作数 题目详情如下: 给定一个单词集合Dict,其中每个单词的长度都相同.现从此单词集合Dict中抽取两个单词A.B,我们希望通过若干次操作把单词A变成单词B,每次操作可以改变单词的 ...

  9. 【周赛-简单】5488. 使数组中所有元素相等的最小操作数

    存在一个长度为 n 的数组 arr ,其中 arr[i] = (2 * i) + 1 ( 0 <= i < n ). 一次操作中,你可以选出两个下标,记作 x 和 y ( 0 <= ...

最新文章

  1. R语言ggplot2可视化:ggplot2可视化散点图并使用geom_mark_ellipse函数在数据簇或数据分组的数据点周围添加椭圆(ellipse)进行注释(对椭圆包围的区域进行着色为阴影区域)
  2. shell 中引用参数总结
  3. 【记忆断层、记忆裂痕】
  4. SpringIOC概述
  5. mysql获取一个表的数据作为值插入_请问如何在mysql中得到一个即将插入数据表中的那条数据的id值(id自增长)?...
  6. d3.js 搭建 d3-force-directed-graph 例子
  7. Python爬虫:用BeautifulSoup进行NBA数据爬取
  8. Mysql Workbench中EER Diagram逆向生成表
  9. 《Java程序员,上班那点事儿》 - 书摘精要
  10. SQLAlchemy 基础知识 - (autoflush 和 autocommit)(relationship 和 backref)(flask migrate迁移数据)
  11. Python3入门机器学习经典算法与应用 第3章 Numpy数组的合并与分割
  12. paip.提升用户体验----置顶菜单
  13. 金税盘、税控盘、税务UKey快速批量抄税清卡的一种方法分享
  14. BZOJ 2759 一个动态树好题(Link-Cut Tree+数学)
  15. 几种高效电路分析方法
  16. OTA 差分升级包的制作
  17. 2021年HSP律所代理品牌侵权案件合集,赶紧查看避免踩坑
  18. tensorflow2.4使用GooleNet实现识别植物花朵图像项目
  19. PHP网站地图生成类
  20. ij idea(2021)的jdk版本可能和本地的有冲突

热门文章

  1. 2020年3月中国编程语言排行榜
  2. 原创小说 - 爱人失踪(连载 中部)
  3. python的歌曲评论数据分析_用Python分析44万条数据,揭秘如何成为网易云音乐评论区的网红段子手...
  4. Unity+Android 打开安卓文件管理器,并拿到文件的真实路径
  5. 如何使用Erdas进行去霾处理
  6. 五分钟教你屏蔽百度广告
  7. springboot连接redis 没有权限 io.lettuce.core.RedisCommandExecutionException: NOAUTH Authentication requir
  8. Linux之文件共享
  9. 什么是SaaS? 定义软件即服务
  10. c语言马青公式计算圆周率,数学圆周率计算马青公式π/4=4arctan1/5-arctan1/239如何得出的?...