Leetcode315题:计算右侧小于当前元素的个数

315. 计算右侧小于当前元素的个数

难度:困难

问题描述:

给你一个整数数组 nums ,按要求返回一个新数组 counts 。数组 counts 有该性质: counts[i] 的值是  nums[i] 右侧小于 nums[i] 的元素的数量。

示例 1:

输入:nums = [5,2,6,1]

输出:[2,1,1,0]

解释:

5 的右侧有 2 个更小的元素 (2 和 1)

2 的右侧仅有 1 个更小的元素 (1)

6 的右侧有 1 个更小的元素 (1)

1 的右侧有 0 个更小的元素

示例 2:

输入:nums = [-1]

输出:[0]

示例 3:

输入:nums = [-1,-1]

输出:[0,0]

提示:

1 <= nums.length <= 105

-104 <= nums[i] <= 104

问题分析:

本问题对于一个整数数组nums,返回一个新数组counts,其中counts[i]的值是整数数组nums中nums[i]元素右侧小于nums[i]的数量,所以不管怎样,肯定需要这个一个功能,即告诉数组nums和给定的一个索引号i,能够统计出nums[i]右侧应该有多少个小于nums[i]的元素数量,为此设计的函数lesscount(nums,i)能够满足要求。

剩下的事情就比较好做了,函数answer(nums)通过循环遍历nums中的每一个索引号,然后调用lesscount(nums,i)函数计算出count[i],返回count数组,这个问题就解决了。

程序如下:

def lesscount(nums,i):
    a=nums[i]
    n=0
    for j in range(i+1,len(nums)):
        if nums[j]<a:
            n=n+1
    return n

def answer(nums):
    count=[]
    for j in range(len(nums)):
        c=lesscount(nums,j)
        count.append(c)
    return count

nums=eval(input('pls input nums='))
print(answer(nums))

运行实例一:

pls input nums=[3,2,5,1]

[2, 1, 1, 0]

运行实例二:

pls input nums=[3,5,6,7]

[0, 0, 0, 0]

运行实例三:

pls input nums=[7]

[0]

解决一个问题,一定要反复阅读其问题描述,找到最关键的点,问题就会迎刃而开。

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-06-11 17:44:07       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-11 17:44:07       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-11 17:44:07       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-11 17:44:07       18 阅读

热门阅读

  1. 不上班如何获取稳定的收入

    2024-06-11 17:44:07       7 阅读
  2. 1.Mongodb 介绍及部署

    2024-06-11 17:44:07       8 阅读
  3. 第3回 做好访问内存的基础准备工作

    2024-06-11 17:44:07       10 阅读
  4. 登录CarSim显示CVI版本过低,软件打不开

    2024-06-11 17:44:07       8 阅读
  5. 王冲解读:商业模式如何创新重塑行业生态

    2024-06-11 17:44:07       12 阅读
  6. 重介降浊一体化设备处理煤矿等重浊度污水

    2024-06-11 17:44:07       9 阅读
  7. 使用 Docker Compose 编排 Django 应用

    2024-06-11 17:44:07       7 阅读
  8. Rhino Linux 2024.1

    2024-06-11 17:44:07       9 阅读