414. Third Maximum Number

LeetCode easy original: C# #array #csharp #easy #leetcode
题目文本会按所选界面语言从俄语翻译;代码保持不变。

Если задан 整数 数组 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 已显示.

所有职位
目前还没有活跃职位。