牛客堂常见面试题精讲(一)5
2015-09-22 15:36
218 查看
数组中哪个数出现次数大于一半?
package com.zhao.niuke; public class Problem_06_FindMajority { //数组中的哪个元素出现次数大于一半 //int[] arr = { 1, 2, 3, 1, 1, 2, 1 }; public static void printHalfMajor(int[] arr) { int cand = 0;//候选 int times = 0;//当前无候选 for (int i = 0; i != arr.length; i++) { if (times == 0) { cand = arr[i];//从数组中第一个开始遍历先取出来放到候选中 times = 1;//times代表当前候选出现的次数 } else if (arr[i] == cand) { times++; } else { times--; } } times = 0; for (int i = 0; i != arr.length; i++) { if (arr[i] == cand) { times++; } } //再次判断times是否大于一半 if (times > arr.length / 2) { System.out.println(cand); } else { System.out.println("no such number."); } } public static void main(String[] args) { int[] arr = { 1, 2, 3, 1, 1, 2, 1 }; printHalfMajor(arr);//数组中的哪个元素出现次数大于一半 } /* * 数组中是否每个元素都只是出现一次? * 数组中哪个元素出现次数大于一半? */ }解析:根据debug一步步调试得到解决方案!也就是根据比较
相关文章推荐
- 基本字符串压缩(程序员面试金典+string)字符串操作
- 大众点评校招内推面试经历-测试开发岗位
- 给IT新人的15点建议:苦逼程序员的辛酸反省与总结
- 经营成功的测试职业生涯
- 单链表面试题
- 黑马程序员——IOS学习笔记(协议和分类)
- 不再做浮躁的程序员
- 程序员挑战高薪,你必须会的十大面试题
- 百度、腾讯面试题
- ym——Andorid-15k+的面试题。
- 黑马程序员——异常处理全过程:不怕一万,就怕万一
- C# 程序员最常犯的 10 个错误
- 面试---阿拉伯数字金额转汉字
- 黑马程序员——IOS学习笔记(类和对象)
- JAVA面试题
- PHP面试总结
- 百度校招面试经历及总结(已发offer)
- 2015-9月份,Android开发,面试题总结,主要记录没有答出来的问题
- PHP面试总结
- 面试---不增加变量,交换两个数值变量的值