题目 参考
题意给定一个长度为n的整数数组a。每次可以做如下操作。
- 选择下标i, 1 < i < n
- 令a[i-1] += a[i];a[i+1] += a[i]; a[i] = -a[i]。
问最少需要多少次操作,才能使数组a所有元素都非负。如果不能做到,则输出-1。
思路a[i] = -a[i],实际上等价于a[i] -= 2*a[i]。 令pre[i] = a[1] + a[2] + … + a[i]。
如果我们操作了下标x,那么对于i = x + 1,pre的值也不受影响。 而pre[x-1] +=a[x],pre[x] -= a[x]。 等价于pre[x], pre[x-1] = pre[x-1], pre[x]。
所以,每次操作,等价于选择下标1
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?