【力扣每日一题】1365. 有多少小于当前数字的数字

简介: 【力扣每日一题】1365. 有多少小于当前数字的数字

1. 题目描述

2. 题目思路

  • 给定一个数组,让你返回每个数值数组中比他小的个数
  • 思路一:直接暴力,两次for循环,出结果
  • 思路二:快速排序,prev == -1 || data[i][0] != data[i - 1][0],如果当前的数值不等于前面的数值的话,说明不重复,进行ret[data[i][1]] = prev;
  • 思路三:桶排序,一遍循环放桶中,一遍循环求下前缀和,最后一遍得出结果注意:因为该题目指定了规定的数据区间

3. 题目代码

public static int[] SmallerNumbersThanCurrent(int[] nums)
        {
            // 桶排
            int[] array = new int[101];
            for (int i = 0; i < nums.Length; i++)
            {
                array[nums[i]]++;
            }
            for (int i = 1; i < 101; i++)
            {
                array[i] = array[i] + array[i - 1];
            }
            int[] cnt = new int[nums.Length];
            for (int i = 0; i < nums.Length; i++)
            {
                if (nums[i] == 0)
                {
                    cnt[i] = 0;
                }
                else
                {
                    cnt[i] = array[nums[i] - 1];
                }
            }
            return cnt;
        }


相关文章
|
6月前
|
Go
golang力扣leetcode 713.乘积小于K的子数组
golang力扣leetcode 713.乘积小于K的子数组
42 0
|
11月前
|
Java
2824. 统计和小于目标的下标对数目 --力扣 --JAVA
给你一个下标从 0 开始长度为 n 的整数数组 nums 和一个整数 target ,请你返回满足 0 <= i < j < n 且 nums[i] + nums[j] < target 的下标对 (i, j) 的数目。
51 0
力扣 713. 乘积小于 K 的子数组
力扣 713. 乘积小于 K 的子数组
62 0
|
人工智能 搜索推荐 vr&ar
每日一题[LeetCode 315]计算右侧小于当前元素的个数
发现leetcode的困难难度做起来还是需要点时间的(还是我太菜了),而且可能大多数人也不能接受,所以明天开始穿插做中等难度题目。
力扣315计算右侧小于当前元素的个数
力扣315计算右侧小于当前元素的个数
88 0
leetcode 1365 多少小于当前数字的数字
leetcode 1365 多少小于当前数字的数字
60 0
LeetCode每日一题(17)—— 乘积小于 K 的子数组(双指针)
乘积小于 K 的子数组 1.题目 2.示例 3.思路 4.代码
|
Java
力扣——713. 乘积小于 K 的子数组(Java、C实现百分百击败)
力扣——713. 乘积小于 K 的子数组(Java、C实现百分百击败)
91 0
力扣——713. 乘积小于 K 的子数组(Java、C实现百分百击败)
|
算法 PHP
力扣(LeetCode)算法题解:1365. 有多少小于当前数字的数字
力扣(LeetCode)算法题解:1365. 有多少小于当前数字的数字
138 0
LeetCode Contest 178-1365. 有多少小于当前数字的数字 How Many Numbers Are Smaller Than the Current Number
LeetCode Contest 178-1365. 有多少小于当前数字的数字 How Many Numbers Are Smaller Than the Current Number