LeetCode 2780. 合法分割的最小下标 C#
原题链接
中等
作者:
hpstory
,
2023-07-17 10:31:33
,
所有人可见
,
阅读 59
C# 代码
public class Solution {
public int MinimumIndex(IList<int> nums) {
int n = nums.Count;
int mode = GetMode();
int total = nums.Count(num => num == mode);
int freq = 0;
for (int i = 0; i < n; i++){
if (nums[i] == mode) freq++;
if (freq * 2 > i + 1 && (total - freq) * 2 > n - i - 1) return i;
}
return -1;
// 摩尔投票
int GetMode(){
int count = 1;
int ans = nums[0];
for (int i = 1; i < n; i++){
if (count == 0){
ans = nums[i];
}
if (ans == nums[i]) count++;
else count--;
}
return ans;
}
}
}