3576. 数组元素相等转换
算法
- 每次操作可以翻转一对相邻元素的符号
- 为使所有元素相等,最终需要所有元素都是
1
或-1
- 从左往右遍历数组,维护一个全局的乘积影响变量
mul
(表示前面的操作对当前元素造成的正负反转) - 遇到第
i
个元素与目标不符时(考虑乘积影响),对i + 1
执行一次操作(乘以-1
) - 统计所需的操作次数,若超过
k
或无法继续(要翻转的下一个元素不存在),则返回false
复杂度分析
- 时间复杂度:
O(n)
- 空间复杂度:
O(1)
C++ 代码
|
|
Python 代码
|
|
Go 代码
|
|
JavaScript 代码
|
|