1365. How Many Numbers Are Smaller Than the Current Number

LeetCode original: C# #array #csharp #leetcode #search #sort
Der Aufgabentext wird für die gewählte Sprache aus dem Russischen übersetzt. Code bleibt unverändert.

: easy

Дан Array nums. Для каждого elementа nums[i] определите, сколько чисел в Arrayе меньше его. То есть, для каждого nums[i] вам нужно посчитать количество допустимых j, таких что j != i и nums[j] < nums[i].

return ответ в виде Arrayа.

Beispiel

Input: nums = [6,5,4,8]

Output: [2,1,0,3]

C# Lösung

zugeordnet/original
using System;
using System.Linq;
public class Solution {
    public int[] SmallerNumbersThanCurrent(int[] nums) {
        int[] sortedNums = (int[]) nums.Clone();
        Array.Sort(sortedNums);
        return nums.Select(num => Array.IndexOf(sortedNums, num)).ToArray();
    }
}

C++ Lösung

Auto-Entwurf, vor dem Einreichen prüfen
#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 vector<int>& SmallerNumbersThanCurrent(vector<int>& nums) {
        vector<int>& sortedNums = (int[]) nums.Clone();
        sort(sortedNums.begin(), sortedNums.end());
        return nums.Select(num => Array.IndexOf(sortedNums, num)).ToArray();
    }
}

Java Lösung

Auto-Entwurf, vor dem Einreichen prüfen
import java.util.*;
import java.math.*;

// Auto-generated Java draft from the C# solution. Review API differences before LeetCode submit.
public class Solution {
    public int[] SmallerNumbersThanCurrent(int[] nums) {
        int[] sortedNums = (int[]) nums.Clone();
        Arrays.sort(sortedNums);
        return nums.Select(num => Array.IndexOf(sortedNums, num)).ToArray();
    }
}

Python Lösung

zugeordnet/original
class Solution:
    def smallerNumbersThanCurrent(self, nums: List[int]) -> List[int]:
        sorted_nums = sorted(nums)
        return [sorted_nums.index(num) for num in nums]

Go Lösung

zugeordnet/original
import "sort"

func smallerNumbersThanCurrent(nums []int) []int {
    sortedNums := append([]int(nil), nums...)
    sort.Ints(sortedNums)
    result := make([]int, len(nums))
    
    for i, num := range nums {
        result[i] = indexOf(sortedNums, num)
    }
    
    return result
}

func indexOf(nums []int, target int) int {
    for i, num := range nums {
        if num == target {
            return i
        }
    }
    return -1
}

Algorithm

Создание копии и сортировка Arrayа:

Создайте отсортированную копию Arrayа nums, чтобы легко находить количество elementов, меньших текущего.

Поиск индекса каждого elementа:

Для каждого elementа nums[i] find его индекс в отсортированной копии Arrayа. Этот индекс указывает количество elementов, меньших nums[i].

Формирование ответа:

Сформируйте Array ответов, где каждый element будет соответствовать количеству чисел, меньших текущего.

😎

Stellen zu dieser Aufgabe

aktive Stellen with overlapping task tags are angezeigt.

Alle Stellen
Es gibt noch keine aktiven Stellen.