文章目录

  • 1. 题目
  • 2. 解题

1. 题目

给定一个整数数组 A ,考虑 A 的所有非空子序列。

对于任意序列 S ,设 S 的宽度是 S 的最大元素和最小元素的

返回 A 的所有子序列宽度之和

由于答案可能非常大,请返回答案模 10^9+7。

示例:
输入:[2,1,3]
输出:6
解释:
子序列为 [1],[2],[3],[2,1],[2,3],[1,3],[2,1,3] 。
相应的宽度是 0,0,0,1,1,2,2 。
这些宽度之和是 6 。提示:
1 <= A.length <= 20000
1 <= A[i] <= 20000

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/sum-of-subsequence-widths
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

类似题目:
LeetCode 907. 子数组的最小值之和(单调栈)
天池 在线编程 所有子数组之和(排列组合)

class Solution {public:int sumSubseqWidths(vector<int> &A) {long long ans = 0, mod = 1e9+7;long long n = A.size();sort(A.begin(), A.end());// 每个数作为最小值的时候,右侧有多少种方案 2^(n-i-1);// 每个数作为最大值的时候,左侧有多少种方案 2^(i);vector<long long> p2(n);p2[0] = 1;for(int i = 1; i < n; i++)p2[i] = (p2[i-1]<<1)%mod;for(int i = 0; i < n; ++i){ans = (ans + (p2[i]-p2[n-i-1])*A[i])%mod;}return (ans+mod)%mod;}
};

68 ms 26.6 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 891. 子序列宽度之和(数学)相关推荐

  1. 力扣每日一题:891. 子序列宽度之和(java)

    891. 子序列宽度之和https://leetcode.cn/problems/sum-of-subsequence-widths/ 目录 题目描述: 解法思路: 优化思路: 题目描述: 一个序列的 ...

  2. [leetcode]1.两数之和

    [leetcode]1.两数之和 题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入只会对应 ...

  3. [双指针|模拟] leetcode 15 三数之和

    [双指针|模拟] leetcode 15 三数之和 1.题目 题目链接 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ? ...

  4. [hashmap|空间换时间] leetcode 1 两数之和

    [hashmap|空间换时间] leetcode 1 两数之和 1.题目 题目链接 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下 ...

  5. [二叉树|深搜|dfs] leetcode 404 左叶子之和

    [二叉树|深搜|dfs] leetcode 404 左叶子之和 1.题目 题目链接 计算给定二叉树的所有左叶子之和. 示例: 3/ \9 20/ \15 7在这个二叉树中,有两个左叶子,分别是 9 和 ...

  6. C/C++描述 LeetCode 167. 两数之和 II - 输入有序数组

    C/C++描述 LeetCode 167. 两数之和 II - 输入有序数组   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在 ...

  7. html div父集子集,怎么让父极元素的宽度自动设为所有子集的宽度之和呢?或者怎么保证子集不换行?不考虑用js!...

    慕仙森 要让父元素的宽度是所有子元素的宽度之和,那就是说跟据内容自适应,设置父元素的display: inline-block;;要让子元素不换行,在父元素上设置white-space: nowrap ...

  8. LeetCode 1. 两数之和

    LeetCode 1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入 ...

  9. Leetcode 15:三数之和(最详细解决方案!!!)

    给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 *a,b,c ,*使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组. **注意:**答案中不可以包含重 ...

最新文章

  1. 从一次react异步setState引发的思考
  2. SVM(支持向量机)之Hinge Loss解释
  3. 少儿编程语言python-Python少儿编程系列-前言-为什么学Python?
  4. 5、ResultSet结果集
  5. Java虚拟机和Dalvik(android)虚拟机的区别
  6. linux中运行ifconfig出现错误,不能sudo apt install net-tools,Linux不能联网
  7. scala读取mysql文件_9. Scala操作外部数据 文件读取,xml,Excel,MySQL
  8. golang java耗内存_golang websocket内存泄漏
  9. Cacti监控Varnish
  10. 如何优化及安全设置Linux系统
  11. TCL学习心得(2)Tcl语言的语法
  12. Java数组集合转换
  13. Linux学习笔记(五) -- Linux+Anjuta搭建C++开发环境
  14. 使用consul注册中心要求服务以自定义instance-id形式注册
  15. 【Course 2 改善深度神经网络】Week 1 深度学习的实用层面
  16. 最短曼哈顿距离(递推+枚举 C++)
  17. 微信小程序根据sourceMap 定位代码错误位置
  18. php 表格模板,怎么制作excel表格模板
  19. Android检查GPU呈现模式和过度绘制
  20. CVPR2019 Learning to Reduce Dual-level Discrepancy for Infrared-Visible Person Re-identification

热门文章

  1. Python脚本实现图片加水印
  2. resin指定java版本_resin的几个常用配置
  3. Wisconsin Squares [USACO]
  4. 【Java基础总结】网络编程
  5. 设置拖拽事件,获取拖拽内容
  6. 【bzoj1738】[Usaco2005 mar]Ombrophobic Bovines 发抖的牛 Floyd+二分+网络流最大流
  7. 隐藏Android下的虚拟按键
  8. 带日期的bean转为json(bean-JSON)
  9. 1006实验一实验报告
  10. oracle 从别的数据库获取数据 ,访问其他数据库