Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
public int singleNumber(int[] A) { int res = 0; for(int i = 0; i < A.length; i++) res = res ^ A[i]; return res; }
Given an array of integers, every element appears three times except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
public int singleNumber(int[] A) { int[] bits = new int[32]; for(int i = 0; i < A.length; i++) { for(int j = 0; j < 32; j++) { if((A[i] & (1 << j)) != 0) bits[j]++; } } int res = 0; for(int i = 0 ; i < 32; i++) { bits[i] = bits[i] % 3; if(bits[i] != 0) res = res + (1 << i); } return res; }
没有评论:
发表评论