在Java中,要找到数组中第三大的数,你可以使用以下方法:
排序法
将数组从大到小排序。
遍历排序后的数组,找到第三大的数。
如果数组长度小于3,则返回最大的数。
一次遍历法
使用三个变量来跟踪最大、第二大和第三大的数。
遍历数组,更新这三个变量。
如果第三大的数没有被更新过,则返回最大数。
下面是一个使用一次遍历法的示例代码:
```java
import java.util.Arrays;
public class ThirdMax {
public static int thirdMax(int[] nums) {
int firstMax = Integer.MIN_VALUE;
int secondMax = Integer.MIN_VALUE;
int thirdMax = Integer.MIN_VALUE;
for (int num : nums) {
if (num > firstMax) {
thirdMax = secondMax;
secondMax = firstMax;
firstMax = num;
} else if (num > secondMax && num < firstMax) {
thirdMax = secondMax;
secondMax = num;
} else if (num > thirdMax && num < secondMax) {
thirdMax = num;
}
}
return thirdMax == Integer.MIN_VALUE ? firstMax : thirdMax;
}
public static void main(String[] args) {
int[] nums = {3, 2, 1};
System.out.println(thirdMax(nums)); // 输出 1
}
}
这段代码首先定义了三个变量来跟踪最大、第二大和第三大的数,然后遍历数组,根据当前数字与这三个变量的关系来更新它们。如果遍历结束后第三大的数仍然是`Integer.MIN_VALUE`,说明数组中没有第三大的数,此时返回最大数`firstMax`。否则,返回`thirdMax`。
请注意,如果数组中存在重复的数字,并且第三大的数有多个,上述代码只会返回其中一个第三大的数。如果你需要找到所有不同的第三大的数,你可能需要使用集合来存储已经找到的第三大的数,并在遍历过程中检查当前数字是否已经被加入到集合中