leetcode 1658
这题一开始试图用贪心,我用两个指针分别指向头和尾,然后每次选较大的值,移动指针,直到和加起来=x,但是如果两个值相等,该如何移动?就不行了。DP也考虑过,时间复杂度较高。
然后换一种思路,在原数组两端找两个子数组和=x,等同于在原数组中间找一个连续的子数组和=原数组和-x。这样就可以用滑动窗口了,sum表示原数组总和,用midSum记录中间数组的和,每次循环先移动右边界,如果midSum>sum-x,且right>=left,则一直左移left;这里right>=lefth很重要,我一开始漏掉了right=left的情况,这时候left左移之后=right+1,midSum=0。每轮循环最后,如果left不再需要左移了,判断midSum==sum-x,相等则更新答案。我初始化ans为int最大值,每次更新保留最小值,如果最终ans没有被更新过,那么就是没找到,返回-1。
class Solution {public int minOperations(int[] nums, int x) {int ans = Integer.MAX_VALUE;int sum = 0;for (int n : nums) {sum += n;}int midSum = 0;for (int left = 0, right = 0; right < nums.length; right++) {midSum += nums[right];while (midSum > sum - x && right >= left) {midSum -= nums[left++];}if (midSum == sum - x) {ans = Math.min(ans, nums.length - (right - left + 1));}}return ans == Integer.MAX_VALUE ? -1 : ans;}
}
leetcode 1658相关推荐
- LeetCode 1658. 将 x 减到 0 的最小操作数(哈希)
文章目录 1. 题目 2. 解题 1. 题目 给你一个整数数组 nums 和一个整数 x .每一次操作时,你应当移除数组 nums 最左边或最右边的元素,然后从 x 中减去该元素的值.请注意,需要 修 ...
- LeetCode 1658. 将 x 减到 0 的最小操作数
1658. 将 x 减到 0 的最小操作数 给你一个整数数组 nums 和一个整数 x .每一次操作时,你应当移除数组 nums 最左边或最右边的元素,然后从 x 中减去该元素的值.请注意,需要 修改 ...
- [LeetCode]135.Candy
[题目] There are N children standing in a line. Each child is assigned a rating value. You are giving ...
- 【LeetCode】(55)Jump Game(Medium)
题目 Jump Game Total Accepted: 52275 Total Submissions: 194395My Submissions Question Solution Given ...
- LeetCode之Candy
[题目] There areNchildren standing in a line. Each child is assigned a rating value. You are giving ca ...
- leetcode 5. Longest Palindromic Substring 字符串中的最长回文数 逐步从O(n^2)优化至线性时间
题目 解析 思路一 暴力解法 思路二 指针+最大长度 思路3 由中间至两边找回数 思路4 Manacher's algorithm 线性时间 参考文档 题目 链接 给定一个字符串 s,找到 s 中最长 ...
- LeetCode 10. Regular Expression Matching python特性、动态规划、递归
前言 本文主要提供三种不同的解法,分别是利用python的特性.动态规划.递归方法解决这个问题 使用python正则属性 import reclass Solution2:# @return a bo ...
- leetcode Longest Substring with At Most Two Distinct Characters 滑动窗口法
题目解析 代码如下 题目解析 这一题是一道会员的题目,题目介绍如下: Given a string, find the length of the longest substring T that c ...
- leetcode 3. Longest Substring Without Repeating Characters 最长非重复子串的长度 滑动窗口法
题目链接 根据我们之前介绍的滑动窗口法的解法: 滑动窗口法详解 leetcode 438. Find All Anagrams in a String 滑动窗口法 这题,我们不难解决,使用之前的模板. ...
最新文章
- Android开发者指南(22) —— Accessing Resources
- 卷积神经网络matlab_基于卷积神经网络的遥感图像养殖区自动划分
- 门户网站建设与运营需要付出更多成本
- 用python画梵高星空-python 梵高
- 剑指offer 算法(栈和队列 查找和排序)
- SDM管理路由器要进行的相应配置
- Raid技术在Linux下的使用
- 特征工程(1):特征提取、特征构建、特征选择的区别
- bzoj1096 [ZJOI2007]仓库建设
- 量子信息与量子计算_量子计算为23美分。
- 洛谷——P1067 多项式输出
- 基于JAVA+SpringMVC+Mybatis+MYSQL的学生信息与选课系统
- 二叉树的层次遍历II
- 软件开发demo是什么意思_地府后台管理系统demo出来了!附地址
- 解决pycharm 提示no tests were found的问题
- thymeleaf判断对象是否为空的相关逻辑处理
- 应用时间序列分析第四章课后习题(R语言实现)
- 语音合成 TTS 相关的一些总结
- Word2013怎样从任意页开始设置页码
- Spring中的Environment
热门文章
- 西瓜直播弹幕阅读器 python
- 别学AI了!90%的人编程能力差,其实都是输在了这点上!
- 根据图片名字获取Drawable对象
- u盘安装linux卡logo,安装Ubuntu16.04卡在logo界面
- 2018.10.04 codeforces1060E. Sergey and Subway(树形dp)
- 21-《电子入门趣谈》第四章_自己制作电路板-4.2洞洞板的介绍和经典案例使用教程
- javaMailSender 发送邮件设置昵称
- SuMa++论文笔记
- php中如何声明静态属性,PHP使用static关键字声明静态属性和静态方法
- Netty游戏服务器实战开发(12):线程任务组件开发