1. 解题思路
这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。
至于每一种情况是否可以达到,事实上就是一个贪婪算法,倒也没啥好多说的。
2. 代码实现
给出python代码实现如下:
class Solution:
def canMakeEqual(self, nums: List[int], k: int) -> bool:
n = len(nums)
if n == 1:
return True
def is_possible(idx, k, tgt, flag):
if idx == n-2:
if nums[idx] * flag != nums[-1]:
return False
elif nums[-1] != tgt and k == 0:
return False
return True
if nums[idx] * flag != tgt:
if k == 0:
return False
return is_possible(idx+1, k-1, tgt, -1)
else:
return is_possible(idx+1, k, tgt, 1)
return is_possible(0, k, 1, 1) or is_possible(0, k, -1, 1)
提交代码评测得到:耗时329ms,占用内存50.1MB。