元素守恒计算方法_树状数组求逆序对

元素守恒计算方法_树状数组求逆序对给定一个整数数组 nums,按要求返回一个新数组 counts。数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。示例:输入:nums = [5,2,6,1]输出:[2,1,1,0] 解释:5 的右侧有 2 个更小的元素 (2 和 1)2 的右侧仅有 1 个更小的元素 (1)6 的右侧有 1 个更小的元素 (1)1 的右侧有 0 个更小的元素提示:0 <= nums.length <= 10^5-10^4

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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

示例:

输入:nums = [5,2,6,1]
输出:[2,1,1,0] 
解释:
5 的右侧有 2 个更小的元素 (2 和 1)
2 的右侧仅有 1 个更小的元素 (1)
6 的右侧有 1 个更小的元素 (1)
1 的右侧有 0 个更小的元素

提示:

0 <= nums.length <= 10^5
-10^4 <= nums[i] <= 10^4

题解
树状数组求逆序数

class Solution { 
   
public:
    static const int N = 1e5 + 10;
    int lowbit(int x){ 
   
        return (x & (-x));
    }
    int query(int x){ 
   
        int sum = 0;
        while(x > 0){ 
   
            sum += tree[x];
            x -= lowbit(x);
        }
        return sum;
    }
    void add(int x,int y){ 
   
        while(x < N){ 
   
            tree[x] += y;
            x += lowbit(x);
        }
    }
    int tree[N] = { 
   0};

    vector<int> countSmaller(vector<int>& nums) { 
   
        vector<int>res;
        int base = 1e4 + 1;
        for(int i = nums.size() - 1;i >= 0;i --){ 
   
            nums[i] = nums[i] + base;
            res.push_back(query(nums[i] - 1));
            add(nums[i],1);
        }
        reverse(res.begin(),res.end());
        return res;
    }
};
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/169134.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • CSS3梅花三弄特效

    效果预览:http://hovertree.com/texiao/js/22/效果图:代码如下:转自:http://hovertree.com/h/bjaf/meihua.htm推荐:http:/

    2021年12月22日
    61
  • gmapping matlab实现_Gmapping笔记[通俗易懂]

    gmapping matlab实现_Gmapping笔记[通俗易懂]2D-slam激光slam:开源代码的比较HectorSLAMGmappingKartoSLAMCoreSLAMLagoSLAM作者:kint_zhao原文:https://blog.csdn.net/zyh821351004/article/details/47381135最近找到一篇论文比较了一下目前ros下2D激光slam的开源代码效果比较:详细参见论文:Anevalu…

    2022年6月29日
    25
  • eNSP静态路由配置_ensp多条静态路由互联

    eNSP静态路由配置_ensp多条静态路由互联ensp静态路由配置(详细)一、首先了解一下数据转发过程中路由器的工作原理路由器的工作原理:(1)解封装:此处解封装的前提是目的mac地址是自己才能解封装(2)根据目的ip查路由表转发数据。查看路由表的命令:[Huawei]displayiprouting-table此处分两种情况:情况1:如果目的ip在路由表中,则会把数据转发到相应的出接口情况2:如果目的ip不在路由表中,则把数据丢了就可以了二、搭建好拓扑图拓扑图如下:图中我已经标好了每个接

    2022年9月25日
    3
  • goland激活码2021【注册码】

    goland激活码2021【注册码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    47
  • metasploit指令_msfconsole下载

    metasploit指令_msfconsole下载在MSF里面msfconsole可以说是最流行的一个接口程序。很多人一开始碰到msfconsole的时候就害怕了。那么多复杂的命令语句需要学习,但是msfconsole真的是一个强大的接口程序。Msfconsole提供了一个一体化的集中控制台。通过msfconsole,你可以访问和使用所有的metasploit的插件,payload,利用模块,post模块等等。Msfconsole还有第三方程序的…

    2025年9月30日
    4
  • Xmind快捷键笔记

    Xmind快捷键笔记

    2022年6月5日
    25

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号