严格来说这个程序编写的很不好
在于输出循环的地方。那个地方迭代器必然只能迭代一次,但是我这么写就注定有很大的迷惑性,并且return0 也给程序的理解增加难度,因为这个是永远到达不了的代码
这个题目还有一个常量空间的算法,但是那个已经不是我写的了。常量算法用了 number XOR number =0这个特性。可以吧所有的数都xor到一个ans里面。最后剩下的ans就是那个一个的数字。秒
public int singleNumber(int[] nums) {
int ans = 0;
for (int i = 0; i < nums.length; i++)
ans ^= nums[i];
return ans;
}
我写的代码
public class Solution {
public int singleNumber(int[] nums) {
HashSet<Integer> hashSet=new HashSet<Integer>();
for(int i=0;i<nums.length;i++)
{
if(hashSet.contains(nums[i]))
{
hashSet.remove(nums[i]);
}
else
{
hashSet.add(nums[i]);
}
}
@SuppressWarnings("rawtypes")
Iterator iter = hashSet.iterator();
while(iter.hasNext()){
return (int) iter.next();
}
return 0;
}
}
本文探讨了一种改进的单数查找算法,通过避免使用集合和迭代器,提高程序效率并减少复杂性。
692

被折叠的 条评论
为什么被折叠?



