教学过程中,教练示范一次,学员跟做三次。该过程被混乱剪辑后,记录于数组 actions
,其中 actions[i]
表示做出该动作的人员编号。请返回教练的编号。
示例 1:
输入:actions = [5, 7, 5, 5] 输出:7
示例 2:
输入:actions = [12, 1, 6, 12, 6, 12, 6] 输出:1
提示:
1 <= actions.length <= 10000
1 <= actions[i] < 2^31
- 一)我自己写的方法
-
public class Solution { public int TrainingPlan(int[] actions) { Array.Sort(actions); int len = actions.Length; int index = 0; for(int i = 1;i < len; i++){ if(actions[i]!=actions[i-1]){ index = i; break; } } //这个index 可能是教练次数 或者一个学员次数 if(len % index == 0) return actions[index - 1]; else{ int count = index; while(index < len && index + count -1 < len){ if(actions[index] == actions[index + count -1]){ index +=count; } else{ return actions[index]; } } return actions[index >= len ? index - count : index]; } } }
二)代码示例中的办法、但我感觉是错的,,,因为[1,1,2,2,2,2,2,2]答案是错的、按照代码示例中的办法,下面这个是错的,
-
public class Solution { public int TrainingPlan(int[] actions) { Array.Sort(actions); int len=actions.Length; for (int i = 1; i < len; i += 3) { if (actions[i] != actions[i - 1]) return actions[i - 1]; if (i + 3 > len - 1) return actions[len - 1]; } return -1; } }