标签:one 解决方案 mil == ++ lock amp return 代码
目录
数组中有一个数出现的次数超过了数组长度的一半,请找出这个数。
具体代码如下:
package com.liuzhen.practice; public class Main { public int getResult(int[] A) { //找到两个不相等的元素,将这两个元素变为0 for(int start = 0, i = 1;i < A.length;i++) { while(A[start] == 0) { start++; } if(A[start] != A[i] && start < i) { A[start] = 0; A[i] = 0; start++; } } int result = 0; for(int i = 0;i < A.length;i++) { if(A[i] != 0) { result = A[i]; break; } } return result; } public static void main(String[] args) { Main test = new Main(); int[] A = {1,2,3,4,5,6,7,1,1,2,3,2,2,2,2,2}; System.out.println(test.getResult(A)); } }
运行结果:
2
具体代码如下:
package com.liuzhen.practice; public class Main1 { public int FindOneNumber(int[] A) { int result = A[0]; int count = 1; for(int i = 1;i < A.length;i++) { if(count == 0) { result = A[i]; count = 1; } else { if(A[i] == result) count++; else count--; } } return result; } public static void main(String[] args) { Main1 test = new Main1(); int[] A = {1,2,3,4,5,6,7,1,1,2,3,2,2,2,2,2}; System.out.println(test.FindOneNumber(A)); } }
运行结果:
2
参考资料:
1.《编程之法面试和算法心得》 July 著
标签:one 解决方案 mil == ++ lock amp return 代码
原文地址:http://www.cnblogs.com/liuzhen1995/p/6719695.html