整数数组,一个数字出现了半数以上次,找出这个数字
2014-12-16 16:46
295 查看
遍历,添加一个length/2+1的数组,记录每个数组出现的次数,然后遍历该频率数组,最大的数字就是
出现了半数以上的话,为什么不两两约去,剩下的那个不就是结果了嘛。当然还要考虑一件事,要是1,1,2,1,哪结果不就是2了嘛?所以当前后两个数字一样的时候就不能直接约去了,复杂度o(n)
看代码:
没有多高深的知识点,但就是为这种泛光的思想惊叹~~
出现了半数以上的话,为什么不两两约去,剩下的那个不就是结果了嘛。当然还要考虑一件事,要是1,1,2,1,哪结果不就是2了嘛?所以当前后两个数字一样的时候就不能直接约去了,复杂度o(n)
看代码:
public class Test { int fun(){ int array[]={4,1,4,1,4,1,4}; int result=array[0],count=0; for(int i=0;i<array.length;i++){ if(count==0){ result=array[i]; count=1; }else if(array[i]==result){ count++; }else if(result!=array[i]){ count--; } } return result; } static public void main(String []args){ fun(); } }
没有多高深的知识点,但就是为这种泛光的思想惊叹~~
相关文章推荐
- 一个整数数组,每个数字都出现K次,只有一个数字出现M次,找出这个数字(线性时间)
- 现在有一个整数数组,已知一个数出现的次数超过了一半,请用O(n)的复杂度的算法找出这个数
- 假设数组中有一个数字出现的次数超过了数组长度的一半,试编程找出这个数字(消除 qosrt 快速排序 哈希)
- 现在有一个整数数组,已知一个数出现的次数超过了一半,请用O(n)的复杂度的算法找出这个数
- 数组中有一个数字出现的次数超过了数组长度的一半,请找出这个数。java实现
- 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字
- 一个全是32位整数的大数组,除了其中一个数字出现2次外,其余的数字都出现了3次。如何找出那个只出现了两次的数字?
- C++数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。(牛客剑指offer)
- 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。
- 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在
- 数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字
- 现在有一个整数数组,已知一个数出现的次数超过了一半,请用O(n)的复杂度的算法找出这个数
- 数组中有一个数字出现的次数超过了数组长度的一半,请找出这个数字。
- 软件开发者面试百问-----有一个数组,里面是从1到1,000,000的整数,其中有一个数字出现了两次,你怎么找出那个重复的数字?
- 一组数据中只有一个数字出现了一次。 其他所有数字都是成对出现的。请找出这个数字(数组指针的方法)
- 面试:数组中有一个数字出现的次数超过了数组长度的一半,找出这个数
- 数组中一个数字出现的次数超过了数组长度的一半,找出这个数字
- 数组中有一个数字出现的次数超过了数组长度的一半,找出这个数
- 一个整数数组里面,除了两个数之外,其他的数字都出现了两次,写一个程序找出这两个数
- 数组中有一个数字出现的次数超过了数组长度的一半,找出这个数