【Leetcode Daily】1658将x减到0的最小操作数
题目浅析
想查看原题可以点击题目链接。
简单地说,给你一个整数数组,可以从左或从右一次删除一个数,使得删除的总数之和恰好为x。
思路分享
两个思路,正向和逆向,皆基于不定长滑动窗口(【Leetcode Daily】3090每个字符最多出现两次的最长字符串)。
正向是计算窗口内之和恰好为 x,由于最左和最右的删除形式,可以把原数组拼接。但是还需要限定两点,一个是窗口长度不大于原数组长度;二个是窗口的左侧和右侧满足左侧或者右侧贴边,或者左侧和右侧在加倍窗口的两侧。总之,挺麻烦的。
逆向是,先计算数组之和,目标为最大化窗口内数值,至于删除的结果就拿数组和减去窗口值获得。这个简单,不需要加倍数组,也不需要限定窗口位置。
代码解答(强烈建议自行解答后再看)
- 正向
1 | class Solution { |
- 逆向
1 | class Solution { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 LuYaoQi's Blogs!