首页 > 其他分享 >315. 计算右侧小于当前元素的个数

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

时间:2023-06-12 16:25:18浏览次数:47  
标签:pairs nums self 个数 mid 315 aux 右侧

labuladong 题解

难度困难

给你一个整数数组 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

 

 

 

 

 

#
# @lc app=leetcode.cn id=315 lang=python3
#
# [315] 计算右侧小于当前元素的个数
#

# @lc code=start
from collections import defaultdict

class Solution:
    def __init__(self) -> None:
        self.res = []
    def countSmaller(self, nums: List[int]) -> List[int]:
        def merge(nums,aux,l,mid,r):
            i = l 
            j = mid 
            k = l
            while i < mid and j < r:
                if aux[i][0] <= aux[j][0]:
                    nums[k] = aux[i]
                    self.res[nums[k][1]] += j - mid
                    i+=1
                    k+=1
                else:
                    nums[k] = aux[j]
                    j+=1
                    k+=1

            while i < mid:
                nums[k] = aux[i]
                self.res[nums[k][1]] += j - mid
                i+=1
                k+=1
            while j < r:
                nums[k] = aux[j]
                j+=1
                k+=1
            aux[l:r] = nums[l:r] 

        def merge_and_sort(nums,aux,l,r):
            #print(l,r)
            if l >= r-1:
                return 
            mid = l + (r-l)//2
            merge_and_sort(nums,aux,l,mid)
            merge_and_sort(nums,aux,mid,r)
            merge(nums,aux,l,mid,r)



        self.res = [0] * len(nums)
        num_pairs = []
        for i in range(len(nums)):
            num_pairs.append((nums[i],i))
        aux = num_pairs.copy()
        merge_and_sort(num_pairs,aux,0,len(nums))    
        print(num_pairs)
        return self.res 
# @lc code=end

 

标签:pairs,nums,self,个数,mid,315,aux,右侧
From: https://www.cnblogs.com/zle1992/p/17475330.html

相关文章

  • AcWing——凑数(二进制中1的个数)
    1、题目初始时,n=0。每一轮操作都要依次完成两个步骤:第一步,任选一个非负整数a,将n增加a,这一步所需付出的代价为a。第二步,将n乘以2,这一步无需付出任何代价。你可以不断重复上述操作。给定一个整数x,你的任务是使n在某一步操作后(不一定是某一轮结束后)恰好等于x且付出的总代......
  • Python寻找给定序列中相差最小的两个数字
    importrandomdefgetTwoClosestElements(seq):#先进行排序,使得相邻元素最接近#相差最小的元素必然相邻seq=sorted(seq)#无穷大dif=float('inf')#遍历所有元素,两两比较,比较相邻元素的差值#使用选择法寻找相差最小的两个元素fori,vi......
  • 将一个数组拆分为一个为奇数数组,一个为偶数数组
    将一个数组拆分为一个为奇数数组,一个为偶数数组#include<stdio.h>intmain(){inta[10]={0,1,2,3,4,5,6,7,8,9};inti[10],j[10];intb,c,d;c=d=0;for(b=0;b<10;b++){if(a[b]%2==0){i[c]=a[b];c......
  • 将奇数数组与偶数数组合并为一个数组
    将奇数数组与偶数数组合并为一个数组#include<stdio.h>intmain(){inta[10];inti[10]={0,2,4,6,8};intj[10]={1,3,5,7,9};intb,c,d,e;d=e=5;c=0;for(b=0;b<d;b++){a[c]=i[b];c++;}for(b=0;b<e;b++......
  • P3158 [CQOI2011]放棋子
    [CQOI2011]放棋子题目描述在一个\(m\)行\(n\)列的棋盘里放一些彩色的棋子,使得每个格子最多放一个棋子,且不同颜色的棋子不能在同一行或者同一列,有多少种方法?例如,\(n=m=3\),有两个白棋子和一个灰棋子,下面左边两种方法都是合法的,但右边两种都是非法的。\(1\len,m\le30\),\(1......
  • 一个整数数组里面,除了两个数之外,其他的数字都出现了两次,写一个程序找出这两个数...
    一个整数数组里面,除了两个数之外,其他的数字都出现了两次,写一个程序找出这两个数,要求算法的时间复杂度为O(n). n为数组的长度。  程序代码如下: //取二进制中首个为1的位置intfindFirstOne(intvalue){intpos=0;while((value&1)!=1){value=value>>1;pos++;......
  • 1~n约数个数的和
    题目链接(https://ac.nowcoder.com/acm/problem/14682)题意简述给个n,求1到n的所有数的约数个数的和~(n<100000000)分析说明样例解释:1有1个约数12有2个约数1,23有2个约数1,3讲解:正常想法是用一个双重循环对每个数的约数查找,发现是约束则加1,但这样简单的想法会TheTimeLimi......
  • 获取字符串个数和长度
    SAP中strlen()只能计算字符串的个数,不能计算含有中文字符串的长度。FIELD-SYMBOLS:<FV>TYPESTRING.DATA:LV_SRTTYPEI.DATA:LVTYPEREFTODATA.DATA:LV_SSSSTYPECHAR255.LV_SSSS='我'.START-OF-SELECTION.CREATEDATALVTYPESTRING.ASSIGNLV->*TO<FV&g......
  • 1315. 祖父节点值为偶数的节点和
    1315.祖父节点值为偶数的节点和题目算法设计:深度优先搜索 题目传送门:https://leetcode.cn/problems/sum-of-nodes-with-even-valued-grandparent/ 算法设计:深度优先搜索遍历二叉树,记录祖父节点,祖父节点是偶数,累加当前节点。或者,对于节点值为偶数的节点,累加它的孙子节点的值即......
  • linux目录最大支持文件个数
    转、:linux目录最大支持文件个数 文件系统格式centos7缺省是xfs,centos6缺省是ext4,centos5缺省是ext3ext3文件数最大支持31998个,文件系统容量最大16TB,单个文件最大2TBext4文件数最大无限制,文件系统容量最大1EB(1EB=1024PB,1PB=1024TB)),单个文件最大16TB具体还和系统inode(索引节......