题目描述:
问题解答:
1.数组扩容法(此方法比较慢)
class Solution {
public int thirdMax(int[] nums) {
int[] newnums=new int[0];
for(int i=0;i<nums.length;i++) {
boolean flag=zhuangtai(nums[i],newnums);
if(flag) {
newnums=Arrays.copyOf(newnums, newnums.length+1);
newnums[newnums.length-1]=nums[i];
}
}
Arrays.sort(newnums);
if(newnums.length<3) {
return newnums[newnums.length-1];
}else {
return newnums[newnums.length-3];
}
}
private boolean zhuangtai(int num, int[] newnums) {
for(int i=0;i<newnums.length;i++) {
if(num==newnums[i]) {
return false;
}
}
return true;
}
}
set集合去重法1:
class Solution {
public int thirdMax(int[] nums) {
Integer max1 = null;
Integer max2 = null;
Integer max3 = null;
Set<Integer> set=new HashSet <>();
for(int i=0;i<nums.length;i++){
set.add(nums[i]);
}
for (Integer x : set) {
if ((max1 == null) || x > max1) {
max3 = max2;
max2 = max1;
max1 = x;
}
else if ((max2 == null) || x > max2) {
max3 = max2;
max2 = x;
}
else if ((max3 == null) || x > max3) {
max3 = x;
}
}
if (max3 == null) {
return max1;
}else {
return max3;
}
}
}
set去重法2:
class Solution {
public int thirdMax(int[] nums) {
Set<Integer>set=new LinkedHashSet<Integer>();
Arrays.sort(nums);
for(int i=0;i<nums.length;i++){
set.add(nums[i]);
}
int nums1[]=new int[set.size()];
Iterator<Integer> it=set.iterator();
while (it.hasNext()) {
for(int i=0;i<set.size();i++){
nums1[i]=it.next();
}
}
if(nums1.length<3){return nums1[nums1.length-1];}
return nums1[nums1.length-3];
}
}