lintcode-medium-Single Number III
Posted 哥布林工程师
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lintcode-medium-Single Number III相关的知识,希望对你有一定的参考价值。
Given 2*n + 2
numbers, every numbers occurs twice except two, find them.
Example
Given [1,2,2,3,4,4,5,3]
return 1
and 5
Challenge
O(n) time, O(1) extra space.
public class Solution { /** * @param A : An integer array * @return : Two integers */ public List<Integer> singleNumberIII(int[] A) { // write your code here if(A == null || A.length == 0) return new ArrayList<Integer>(); List<Integer> res = new ArrayList<Integer>(); int temp = A[0]; for(int i = 1; i < A.length; i++) temp ^= A[i]; int index = 0; for(int i = 0; i < 32; i++){ if(((temp >> i) & 1) == 1){ index = i; break; } } Integer res1 = null; Integer res2 = null; for(int i = 0; i < A.length; i++){ if(((A[i] >> index) & 1) == 1){ if(res1 == null){ res1 = A[i]; } else{ res1 ^= A[i]; } } else{ if(res2 == null){ res2 = A[i]; } else{ res2 ^= A[i]; } } } res.add(res1); res.add(res2); return res; } }
以上是关于lintcode-medium-Single Number III的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Matlab 中为 libSVM 的 nu-SVM 使用变量而不是 nu 参数的数量?
R语言e1071包中的支持向量机:构建nu-classification类型的支持向量机SVM并分析不同nu值惩罚下模型分类螺旋线型(sprials)线性不可分数据集的表现