题目:
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?
题意:
给定一个整数数组,除了一个数字外,其他的数字都出现三次,找出这个只出现一次的数字。要求是线性的时间复杂度,不能有多的内存空间。
代码:(Java)
public class Solution {
public int singleNumber(int[] nums) {
int n = nums.length;
if(n<2) {
return nums[0];
}
else {
Arrays.sort(nums);
int j = 0;
if (nums[j] != nums[j+1]) {
return nums[0];
}
for (j = 1; j < n-1; j++) {
if (nums[j] != nums[j-1] && nums[j] != nums[j+1] ) {
return nums[j];
}
}
return nums[j];
}
}
}
笔记:
其实算法并不满足要求,是为了学习一下java的语法。
1、变量定义之前要声明类型
2、每一句结束后,后面要加分号
3、if、for的形式与C一样,要用大括号括起来
4、计算数组长度,用.length;计算字符串长度,用.length()
5、排序用Arrays.sort()
6、输出用System.out.print( ); 输出数组时,需要遍历数组每个元素,一个一个输出