1365. How Many Numbers Are Smaller Than the Current Number
leetcode
#array#csharp#leetcode#search#sort
Task
: easy
Дан массив nums. Для каждого элемента nums[i] определите, сколько чисел в массиве меньше его. То есть, для каждого nums[i] вам нужно посчитать количество допустимых j, таких что j != i и nums[j] < nums[i].
Верните ответ в виде массива.
Пример
Input: nums = [6,5,4,8]
Output: [2,1,0,3]
C# solution
matched/originalusing 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++ solution
auto-draft, review before submit#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 solution
auto-draft, review before submitimport 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 solution
matched/originalclass Solution:
def smallerNumbersThanCurrent(self, nums: List[int]) -> List[int]:
sorted_nums = sorted(nums)
return [sorted_nums.index(num) for num in nums]Go solution
matched/originalimport "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
}Explanation
Algorithm
Создание копии и сортировка массива:
Создайте отсортированную копию массива nums, чтобы легко находить количество элементов, меньших текущего.
Поиск индекса каждого элемента:
Для каждого элемента nums[i] найдите его индекс в отсортированной копии массива. Этот индекс указывает количество элементов, меньших nums[i].
Формирование ответа:
Сформируйте массив ответов, где каждый элемент будет соответствовать количеству чисел, меньших текущего.
😎