/**
* @param {number[]} nums
* @return {number}
*/
var bestRotation = function(nums) {
const n = nums.length;
const diffs = new Array(n).fill(0);
for (let i = 0; i < n; i++) {
const low = (i + 1) % n;
const high = (i - nums[i] + n + 1) % n;
diffs[low]++;
diffs[high]--;
if (low >= high) {
diffs[0]++;
}
}
let bestIndex = 0;
let maxScore = 0;
let score = 0;
for (let i = 0; i < n; i++) {
score += diffs[i];
if (score > maxScore) {
bestIndex = i;
maxScore = score;
}
}
return bestIndex;
};
该博客介绍了一种算法,用于求解给定数组在经过某种旋转操作后,找到最长连续相同元素子数组的起始索引。通过计算元素间的增减情况,找到最大得分索引。
680

被折叠的 条评论
为什么被折叠?



