package 排序案例;
public class ExceedHalf1 { // 找水王也就是数组中刚好出现一半的那个数和超过一半的那个题目的思路类似
public static int exceed(int[] arr) {
if(arr.length < 3) {
return arr[0];
}
int num = arr[0];
int time = 1;
int count = num == arr[arr.length - 1] ? 1 : 0;
for(int i = 1; i < arr.length; i++) {
if(num == arr[i]) {
time++;
}else if(time == 0) { // 如果第二个元素和第一个不相同time--然后i++然后和第三个元素但num始终没有变化就相当于直接跳过了第二个元素
num = arr[i]; // 非常巧其实这就是coding能力要准确把握关键的变量 不要写一些没有用的变量就是只要这个变量变化其他的跟着变化就可以了
time = 1;
}else {
time--;
}
if(arr[i] == arr[arr.length - 1]) {
count++;
}
}
if(count == arr.length / 2) {
// 因为刚好个数刚好满足一半那么数组中数的排列情况也只有几种比较特殊
// 1 2 3 2 4 2 还有 2 1 2 3 2 4 就和最后一个元素比较如果相同count就++如果最后的元素刚好就是
// 水王的话count就=arr.length/2不然就等于num
System.out.println(arr[arr.length - 1]);
}else {
System.out.println(num);
}
return num;
}
public static void main(String[] args) {
int[] arr = {1, 1, 4, 4, 2, 2, 2, 2};
exceed(arr);
}
}
2019-05-23排序案例2
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 小学语文修改病句的方法 修改病句是小学语文考试中常见的题型,在修改病句之前,我们应该清晰的了解有哪些病句现象,下面...