一个集合里面只有一个数字是一个、其他都是两个写个算法检验出单个的数字,两次循环,Java
时间: 2024-12-11 19:22:14 浏览: 6
你可以使用以下简单的Java算法来检测一个集合(List或数组)中唯一的数字,它需要两次遍历:
```java
import java.util.ArrayList;
import java.util.List;
public class UniqueNumberFinder {
public static void main(String[] args) {
List<Integer> numbers = new ArrayList<>();
// 添加元素到numbers列表,假设其中有一个是1,其余是2
numbers.add(1);
numbers.add(2);
numbers.add(2);
numbers.add(2);
int uniqueNumber = findUniqueNumber(numbers);
System.out.println("The unique number is: " + uniqueNumber);
}
/**
* 使用两次循环查找唯一数字
* @param numbers 需要检查的数字集合
* @return 唯一的数字
*/
public static int findUniqueNumber(List<Integer> numbers) {
if (numbers == null || numbers.isEmpty()) {
return -1; // 或者抛异常,表示无数据或空集
}
// 第一次遍历找到每个数字的计数
int[] counts = new int[Integer.MAX_VALUE]; // 数组大小足够处理整型
for (int num : numbers) {
counts[num]++;
}
// 第二次遍历找出计数为1的数字
for (int i = 0; i < counts.length; i++) {
if (counts[i] == 1) {
return i; // 返回唯一的数字
}
}
// 如果没有找到唯一数字,返回null或某个特殊值
return null; // 示例代码中未返回,这里可以添加相应处理
}
}
```
在这个例子中,我们首先统计每个数字出现的次数,然后在第二次循环中查找计数为1的数字。
阅读全文