这道题如果普通手段,其实就是通过另外一个数组来实现,但是如果要原地完成就比较难想到了。其实可以通过三次翻转法,也就是先对整个数组翻转,然后翻转前 k 个,再翻转后 n-k 个,这样就能达到右移的效果。func rotate(nums []int, k int) {
n := len(nums)
for i, j := 0, n-1; i < j; i, j = i+1...
这道题要分割出两个数组,平均值需要相等,那其实就相当于分出一个有k个元素的数组的平均值和整体数组的平均值相等就可以满足了,也就是 $target / k = sum / n$。那么 $target = sum * k / n$所以我们需要求的其实就是不同的 k 对应的和(target)是否等于 sum * k / n所以定义可达性 DP 数组如下:dpk 代表刚好 k 个数能组成的和有哪些,...