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

元素守恒计算方法_树状数组求逆序对给定一个整数数组 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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • MDSF:代码生成(Code Generation)介绍

    MDSF:代码生成(Code Generation)介绍

    2021年6月19日
    132
  • sdio接口是什么_如何理解api接口

    sdio接口是什么_如何理解api接口运用SD卡第一步,认识SDIO接口做毕业设计需要用到大量的音频文件,一般的存储器满足不了存储要求,故选择SD卡作为存储器件。在这里记录一下自己的学习经历,学习一个新的IC,无非是要么根据时序图写出Read和Write函数,要么是根据通信总线和IC相关操作指令去完成Read和Write函数。只有能与对应IC“说话”,我们才能去开发它更多地可能性。这里以原子探索者为例,为大家介绍一下SD卡相关知识。…

    2022年10月3日
    3
  • 3.7v锂电池升压电路_锂电池升压5v电路图

    3.7v锂电池升压电路_锂电池升压5v电路图三节3.7V的锂电池串联,11.1V和最大12.6V锂电池充电电路的解决方案。在应用中,一般使用低压5V,如USB口直接输入的给三串锂电池充电,还有是15V或者18V,20V输入降压给锂电池充电的两种情况。PW4053是输入5V升压充电管理芯片,PW4203是输入15V-20V降压充电三节锂电池IC5V,USB口输入,给三节锂电池12.6V充电电路:PW4053是一款5V输入,最大1.2A充电电流,支持三节锂离子电池的升压充电管理IC。PW4053集成功率MOS…

    2022年9月26日
    2
  • 【转载】读懂IL代码就这么简单(二)

    【转载】读懂IL代码就这么简单(二)

    2021年11月20日
    52
  • MySQL之权限管理

    MySQL之权限管理MySQL之权限管理

    2022年4月24日
    51
  • ffmpeg avformat_open_input返回失败,错误码-10049

    ffmpeg avformat_open_input返回失败,错误码-10049ffmpegavformat_open_input失败,返回错误码-10049,错误描述:Errornumber-10049occurred调试代码,找到如果设置了time_out参数,就会失败,不设置就没问题,具体原因还没有找到,备注此问题,以待后续继续分析源代码:av_register_all();avformat_network_init();AVFormatCo…

    2022年9月28日
    2

发表回复

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

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