タイトル説明
空でない配列を指定して、この配列で3番目に大きい数を返し ます。存在しない場合は、配列内の最大数を返します
アイデア
- まず、配列を降順で並べ替えます
- 配列に重複する要素がある可能性があります。次に、フラグを使用して記録し、配列をトラバースします。現在の要素と次の要素が等しくない場合は、flag ++、flag == 2の場合、配列の数は3番目に大きくなります。 、return次の要素
- 上記の状況が満たされない場合は、3番目に大きい要素がないことを意味し、nums [0]を直接返し、最大数で十分です。
コード
class Solution {
public int thirdMax(int[] nums) {
for(int bound=0;bound<nums.length;bound++){
for(int cur=nums.length-1;cur>bound;cur--){
if(nums[cur]>nums[cur-1]){
int temp=nums[cur];
nums[cur]=nums[cur-1];
nums[cur-1]=temp;
}
}
}
int flag=0;
for(int i=0;i<nums.length-1;i++){
if(nums[i]!=nums[i+1]){
flag++;
}
if(flag==2){
return nums[i+1];
}
}
return nums[0];
}
}