414. Third Maximum Number
選択した UI 言語に合わせて問題文をロシア語から翻訳します。コードは変更しません。
Если задан 整数 配列 nums, return третье максимальное number в этом 配列е. Если третьего максимального числа не существует, return максимальное number.
例:
Input: nums = [3,2,1]
Output: 1
C# 解法
照合済み/オリジナルpublic class Solution {
public int ThirdMax(int[] nums) {
int? first = null;
int? second = null;
int? third = null;
foreach (int num in nums) {
if (num == first || num == second || num == third) {
continue;
}
if (first == null || num > first) {
third = second;
second = first;
first = num;
} else if (second == null || num > second) {
third = second;
second = num;
} else if (third == null || num > third) {
third = num;
}
}
return third ?? first.Value;
}
}
C++ 解法
自動ドラフト、提出前に確認#include <bits/stdc++.h>
using namespace std;
// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
public int ThirdMax(vector<int>& nums) {
int? first = null;
int? second = null;
int? third = null;
foreach (int num in nums) {
if (num == first || num == second || num == third) {
continue;
}
if (first == null || num > first) {
third = second;
second = first;
first = num;
} else if (second == null || num > second) {
third = second;
second = num;
} else if (third == null || num > third) {
third = num;
}
}
return third ?? first.Value;
}
}
Java 解法
照合済み/オリジナルimport java.util.HashSet;
import java.util.Set;
public class Solution {
public int thirdMax(int[] nums) {
Integer first = null;
Integer second = null;
Integer third = null;
for (Integer num : nums) {
if (num.equals(first) || num.equals(second) || num.equals(third)) {
continue;
}
if (first == null || num > first) {
third = second;
second = first;
first = num;
} else if (second == null || num > second) {
third = second;
second = num;
} else if (third == null || num > third) {
third = num;
}
}
return third != null ? third : first;
}
}
JavaScript 解法
照合済み/オリジナルfunction thirdMax(nums) {
let first = null;
let second = null;
let third = null;
for (const num of nums) {
if (num === first || num === second || num === third) {
continue;
}
if (first === null || num > first) {
third = second;
second = first;
first = num;
} else if (second === null || num > second) {
third = second;
second = num;
} else if (third === null || num > third) {
third = num;
}
}
return third !== null ? third : first;
}
Python 解法
照合済み/オリジナルdef thirdMax(nums):
first = second = third = None
for num in nums:
if num in (first, second, third):
continue
if first is None or num > first:
third = second
second = first
first = num
elif second is None or num > second:
third = second
second = num
elif third is None or num > third:
third = num
return third if third is not None else first
Go 解法
照合済み/オリジナルpackage main
import (
"math"
)
func thirdMax(nums []int) int {
first, second, third := math.MinInt64, math.MinInt64, math.MinInt64
for _, num := range nums {
if num == first || num == second || num == third {
continue
}
if num > first {
third = second
second = first
first = num
} else if num > second {
third = second
second = num
} else if num > third {
third = num
}
}
if third == math.MinInt64 {
return first
}
return third
}
Algorithm
Инициализируйте три переменные для хранения первого, второго и третьего максимальных чисел, используя значения None или аналогичные значения.
Пройдитесь по 配列у, обновляя переменные первого, второго и третьего максимальных чисел, избегая дубликатов.
Если третье максимальное number существует, return его. В противном случае, return первое максимальное number.
😎
Vacancies for this task
有効な求人 with overlapping task tags are 表示.
有効な求人はまだありません。