
Problem: 1658. 将 x 减到 0 的最小操作数
题目解析
首先我们来解读一下本题的题目含义
- 题目会给到我们一个整数数组和一个整数
x,我们可以从左侧,也可以从右侧去减,只要让这个x最终减到【0】即可。 - 不过呢既然可以从左边也可以从右边减的话就一定存在多种方案,我们所需要的话是操作次数最少的那次,看到下面我列出来的两种情况,很明显第二种方法 从右侧删去两个数据更加优的

算法原理分析
接下去我们来介绍一下本题的算法原理
- 通过刚才的分析相信很多小伙伴认为本题的题目意思并不是很难理解,但是呢想找到对应的解决方案还是比较困难的,在这里的话教大家一种方法叫做 “正难则反法"
- 题目中要我们去找的是左右两侧的 最小操作数,但是呢这并不好计算,于是我们可以换个思路,将左侧的数据看做是一个整体,记为
a;将右侧的数据看做是一个整体,记为b;那么我们可以得出a + b = x - 既然左右两侧的是
x的话,那么中间的一段就是sum - x。而且既然两边需要最短的话,中间我们要找的就是【最长的那一段】

- 因

本文解析了一道编程题目,通过正难则反法将问题转化为寻找数组中和为目标值的最长子数组的长度,利用滑动窗口技巧实现,讨论了代码实现细节和复杂度分析。
最低0.47元/天 解锁文章
2046





