首页 > 其他分享 >891. 子序列宽度之和

891. 子序列宽度之和

时间:2022-11-18 18:56:50浏览次数:76  
标签:891 nums int 次数 宽度 序列 数有

891. 子序列宽度之和

题解:

  1. 对于每个数a而言,其对res的贡献在于 a * a作为最大值的次数 - a * a作为最小值的次数
  2. 先将数组排序
  3. a 作为最大值的次数: a的下标为i, 比a小的数有 0 ~ i-1 总共i个数,则 为 $$2^i$$ 个
  4. a 作为最小值的次数: a的下标为i, 比a大的数有 i+1 ~ n-1 总共i个数,则 为2^ n-i-1 个
  5. 可以先对2的次方作预处理
public int sumSubseqWidths(int[] nums) {
        int mod = (int) (1e9 + 7);
        int n = nums.length;
        // 预处理2的n次方
        int[] p = new int[n + 1];
        p[0] = 1;
        for (int i = 1; i <= n; i++) {
            p[i] = (p[i - 1] * 2) % mod;
        }
        int res = 0;
        Arrays.sort(nums);
        // 对于每个数a而言,其对res的贡献在于 a * a作为最大值的次数   - a * a作为最小值的次数 
        for (int i = 0; i < n; i++) {
            res = (int) ((res + ((long) nums[i] * p[i] - (long) nums[i] * p[n - i - 1]) % mod) % mod);
        }
        return res;
    }

标签:891,nums,int,次数,宽度,序列,数有
From: https://www.cnblogs.com/eiffelzero/p/16904229.html

相关文章

  • ARIMA模型,ARIMAX模型预测冰淇淋消费时间序列数据|附代码数据
    全文下载链接:http://tecdat.cn/?p=22511标准的ARIMA(移动平均自回归模型)模型允许只根据预测变量的过去值进行预测。该模型假定一个变量的未来的值线性地取决于其过去的值,......
  • 65:推导式创建序列_列表推导式_字典推导式_集合推导式_生成器推导式
    ###推导式创建序列推导式是从一个或者多个迭代器快速创建序列的一种方法。它可以将循环和条件判断结合,从而避免冗长的代码。推导式是典型的Python风格,会使用它代表你已......
  • Hadoop序列化之MapReduce案例
    Hadoop序列化序列化概述序列化就是把内存中的对象、转换成字节系列(或者其他数据传输协议)以便于存储到磁盘(持久化)和网络传输。反序列化就是将收到字节序列(或其他数据传输......
  • LeetCode 891 -- 贡献fa
    题目描述子序列宽度之和思路ref代码相似题子数组范围和......
  • 891. 子序列宽度之和 ----- 贡献值法
    一个序列的宽度定义为该序列中最大元素和最小元素的差值。给你一个整数数组nums,返回nums的所有非空子序列的宽度之和。由于答案可能非常大,请返回对109+7取......
  • 792. 匹配子序列的单词数
    792.匹配子序列的单词数//时间复杂度n+m*kpublicintnumMatchingSubseq(Strings,String[]words){List<List<Pair>>list=newArrayList<>();......
  • 最长公共子序列
    最长公共子序列简介最长公共子序列(LongestCommonSubsequence),英文缩写为LCS。其定义是,一个序列S,如果分别是两个或多个已知序列的子序列,且是所有符合此条件序列中最长的......
  • 最长不下降子序列nlogn模板
     #include<bits/stdc++.h>usingnamespacestd;intd[100011],n,len,a[100011];intmain(){//freopen(".in","r",stdin);//freopen(".out","w",stdou......
  • 46:字典_序列解包用于列表元组字典
    ###序列解包序列解包可以用于元组、列表、字典。序列解包可以让我们方便的对多个变量赋值。>>>x,y,z=(20,30,10)>>>x20>>>y30>>>z10>>>(a,b,c)=(9,8,10)>>>......
  • 时间序列数据挖掘之分段线性表示(PLR)
    前言本篇博客用于记录个人在时间序列数据挖掘中进行的timeseriesrepresentation的实践。主要采用PLR(piecewiselinearrepresentation)的方式进行时间序列的降......