leetcode315. 计算右侧小于当前元素的个数(树状数组解法)

leetcode315. 计算右侧小于当前元素的个数(树状数组解法)
题目:给定一个整数数组 nums,按要求返回一个新数组 counts。数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。

树状数组解法


```java
class Solution {public List<Integer> countSmaller(int[] nums) {ArrayList<Integer> res=new ArrayList<>();int n=nums.length;if(n==0) return res;//利用二叉搜索树Set<Integer> set=new TreeSet<>();for(int c:nums) set.add(c);//生成排名表int level=1;HashMap<Integer,Integer> map=new HashMap<>();for(int c:set){map.put(c,level);level++;}fenWickTree helper=new fenWickTree(set.size()+1);for(int i=n-1;i>=0;i--){int temp=map.get(nums[i]);//当前元素的排名helper.update(temp,1);//将当前元素的名次更新数字数组res.add(helper.query(temp-1));//查询小于当前元素的}Collections.reverse(res);return res;}class fenWickTree//树状数组{int[] sum;int len;public fenWickTree(int n){len=n;sum=new int[n+1];}public int lowBits(int x){return x&(-x);}public void update(int i,int num){while (i<=len){sum[i]+=num;i+=lowBits(i);}}public int query(int i){int res=0;while (i>0){res+=sum[i];i-=lowBits(i);}return res;}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/394500.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

洛谷 P1101 单词方阵

给一nn的字母方阵&#xff0c;内可能蕴含多个“yizhong”单词。单词在方阵中是沿着同一方向连续摆放的。摆放可沿着 8个方向的任一方向&#xff0c;同一单词摆放时不再改变方向&#xff0c;单词与单词之间可以交叉,因此有可能共用字母。输出时&#xff0c;将不是单词的字母用*代…

从头学习计算机网络_如何从头开始构建三层神经网络

从头学习计算机网络by Daphne Cornelisse达芙妮康妮莉丝(Daphne Cornelisse) 如何从头开始构建三层神经网络 (How to build a three-layer neural network from scratch) In this post, I will go through the steps required for building a three layer neural network. I’…

python 文件处理

f open(chenli.txt) #打开文件 first_line f.readline() print(first line:,first_line) #读一行 print(我是分隔线.center(50,-)) data f.read() # 读取剩下的所有内容,文件大时不要用 print(data) #打印读取内容f.close() #关闭文件1…

第五章 MVC之Bundle详解

一、简述 Bundle&#xff0c;英文原意就是捆、收集、归拢。在MVC中的Bundle技术&#xff0c;也就是一个对css和js文件的捆绑压缩的技术。 它的用处&#xff1a; 将多个请求捆绑为一个请求&#xff0c;减少服务器请求数 压缩javascript&#xff0c;css等资源文件&#xff0c;减小…

所给服务器端程序改写为能够同时响应多个客户端连接请求的服务器程序_一文读懂客户端请求是如何到达服务器的...

点击上方“蓝色字体”&#xff0c;选择 “设为星标”关键讯息&#xff0c;D1时间送达&#xff01;互联网是人类历史上最伟大的发明创造之一&#xff0c;而构成互联网架构的核心在于TCP/IP协议。那么TCP/IP是如何工作的呢&#xff0c;我们先从数据包开始讲起。1、数据包一、HTTP…

消息服务器 推送技术,SSE服务器推送技术

SSE即 server send event 服务器发送事件&#xff0c;在在早期可能会使用ajax向服务器轮询的方式&#xff0c;使浏览器第一时间接受到服务器的消息&#xff0c;但这种频率不好控制&#xff0c;消耗也比较大。但是对于SSE来说&#xff0c;当客户端向服务端发送请求&#xff0c;服…

Contest2162 - 2019-3-28 高一noip基础知识点 测试5 题解版

传送门 T1 单调栈 按照b排序 在家每一个物品时&#xff0c;判断一下a和b的关系 如果s[sta[top]].a>s[i].b&#xff0c;就弹栈 记录所有时候的height&#xff0c;并取最大值 T2 单调栈裸题 单调栈是干什么的&#xff1f;&#xff1f; 单调栈是记录一个数的一侧的第一个比他大…

在package.json里面的script设置环境变量,区分开发及生产环境。注意mac与windows的设置方式不一样...

在package.json里面的script设置环境变量&#xff0c;区分开发及生产环境。 注意mac与windows的设置方式不一样。 "scripts": {"publish-mac": "export NODE_ENVprod&&webpack -p --progress --colors","publish-win": "…

leetcode 978. 最长湍流子数组(动态规划)

978. 最长湍流子数组 当 A 的子数组 A[i], A[i1], …, A[j] 满足下列条件时&#xff0c;我们称其为湍流子数组&#xff1a; 若 i < k < j&#xff0c;当 k 为奇数时&#xff0c; A[k] > A[k1]&#xff0c;且当 k 为偶数时&#xff0c;A[k] < A[k1]&#xff1b; 或 …

人工智能取代工作_人工智能正在取代人们的工作-开发人员是下一个吗?

人工智能取代工作I was recently asked to comment on whether there was any point in becoming a developer right now, because AI might be doing your job very soon.最近有人要求我评论一下现在成为开发人员是否有任何意义&#xff0c;因为AI可能很快就会完成您的工作。 …

python类self_Python类中的self到底是干啥的

Python编写类的时候&#xff0c;每个函数参数第一个参数都是self&#xff0c;一开始我不管它到底是干嘛的&#xff0c;只知道必须要写上。后来对Python渐渐熟悉了一点&#xff0c;再回头看self的概念&#xff0c;似乎有点弄明白了。首先明确的是self只有在类的方法中才会有&…

PHP中关于取模运算及符号

执行程序段<?php echo 8%(-2) ?>&#xff0c;输出结果是&#xff1a; %为取模运算&#xff0c;以上程序将输出0 $a%$b,其结果的正负取决于$a的符号。 echo ((-8)%3); //将输出-2 echo (8%(-3)); //将输出2转载于:https://www.cnblogs.com/457248499-qq-com/p…

[pytorch] Pytorch入门

Pytorch入门 简单容易上手&#xff0c;感觉比keras好理解多了&#xff0c;和mxnet很像&#xff08;似乎mxnet有点借鉴pytorch&#xff09;&#xff0c;记一记。 直接从例子开始学&#xff0c;基础知识咱已经看了很多论文了。。。 import torch import torch.nn as nn import to…

无线服务器密码让别人改了,wifi密码被改了怎么办_wifi密码被别人改了怎么办?-192路由网...

wifi密码被别人改了怎么办&#xff1f;wifi密码之所以被别人修改&#xff0c;是因为其他人知道了你路由器的登录密码。所以&#xff0c;如果发现自己wifi密码被别人修改了&#xff0c;应该立刻登录到路由器设置界面&#xff0c;修改路由器登录密码、修改wifi密码、并调整wifi加…

[archlinux][hardware] 查看SSD的使用寿命

因为最近把16GB的SSD做成了HDD的cache&#xff0c;所以比较关系寿命问题。 使用smartctl工具。 参考&#xff1a;https://www.v2ex.com/t/261373 linux 下面只有 smartmontools 这一个工具&#xff0c;而且只对像三丧和 intel 这样的大厂支持良好&#xff0c;其余的厂家文档不全…

leetcode174. 地下城游戏(动态规划)

一些恶魔抓住了公主&#xff08;P&#xff09;并将她关在了地下城的右下角。地下城是由 M x N 个房间组成的二维网格。我们英勇的骑士&#xff08;K&#xff09;最初被安置在左上角的房间里&#xff0c;他必须穿过地下城并通过对抗恶魔来拯救公主。 骑士的初始健康点数为一个正…

如何设置Windows版Go —快速简便的指南

by Linda Gregier琳达格雷格(Linda Gregier) Another great language to add to your full-stack developer tool belt is the simple and productive general-purpose programming language of Go.添加到您的全栈开发人员工具带中的另一种很棒的语言是Go的简单而高效的通用编…

python计算现场得分_浅谈用 Python 计算文本 BLEU 分数

浅谈用 Python 计算文本 BLEU 分数BLEU, 全称为 Bilingual Evaluation Understudy(双语评估替换), 是一个比较候选文本翻译与其他一个或多个参考翻译的评价分数尽管 BLEU 一开始是为翻译工作而开发, 但它也可以被用于评估文本的质量, 这种文本是为一套自然语言处理任务而生成的…

Unity的几个特殊文件夹

1.以.开头的文件夹会被unity忽略&#xff0c;资源不会被导入&#xff0c;脚本不会编译。 2.Standard Assets和Pro Standard Assets&#xff1a;在这个文件夹中的脚本最先被编译。 3.Editor&#xff1a;以Editor命名的文件夹允许其中的脚本访问Unity Editor的API。如果脚本中使用…

怎么上传文件到kk服务器,VS Code 关于SFTP上传文件到多服务器的配置

工欲善其事&#xff0c;必先利其器&#xff01;刚学前端的时候一直用的DW来编写代码&#xff0c;其功能非常强大&#xff0c;但在Linux下不能用&#xff0c;所以就转VS Code了。但是刚开始使用VS Code的时候&#xff0c;很多DW上的功能需要自己安装扩展&#xff0c;并配置才可以…