【每日一题Day282】LC2681英雄力量 | 排序+数学

简介: 【每日一题Day282】LC2681英雄力量 | 排序+数学

英雄力量【LC2681】

给你一个下标从 0 开始的整数数组 nums ,它表示英雄的能力值。如果我们选出一部分英雄,这组英雄的 力量 定义为:

i0 ,i1 ,… ik 表示这组英雄在数组中的下标。那么这组英雄的力量为 max(nums[i0],nums[i1] ... nums[ik])2 * min(nums[i0],nums[i1] ... nums[ik]) 。

请你返回所有可能的 非空 英雄组的 力量 之和。由于答案可能非常大,请你将结果对 109 + 7 取余。

妙哉

  • 思路
  • 对于子序列而言,数组元素顺序不影响结果,因此先将数组排序
  • 枚举每个元素作为子序列的最小值,那么元素nums[i]作为最小值的子序列的贡献为image.png
  • 实现时从右往左枚举左小指,先将nums[i]3累加至结果,然后维护变量p,每次将nums[i]p累加至结果,再令p=p2+nums[i]2
  • 实现
class Solution {
    public int sumOfPower(int[] nums) {
        final int mod = (int) 1e9 + 7;
        Arrays.sort(nums);
        long ans = 0, p = 0;
        for (int i = nums.length - 1; i >= 0; --i) {
            long x = nums[i];
            ans = (ans + (x * x % mod) * x) % mod;
            ans = (ans + x * p % mod) % mod;
            p = (p * 2 + x * x % mod) % mod;
        }
        return (int) ans;
    }
}
作者:ylb
链接:https://leetcode.cn/problems/power-of-heroes/solutions/2367175/python3javacgotypescript-yi-ti-yi-jie-pa-lgos/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

复杂度

时间复杂度:O ( log n )

空间复杂度:O ( n log n )

————————————————

版权声明:本文为CSDN博主「TIkitianya」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/Tikitian/article/details/132036644

目录
相关文章
|
4月前
【每日一题Day248】LC2485找出中枢整数 | 数学
【每日一题Day248】LC2485找出中枢整数 | 数学
25 0
|
4月前
【每日一题Day338】LC2582递枕头 | 模拟+数学
【每日一题Day338】LC2582递枕头 | 模拟+数学
11 0
|
4月前
【每日一题Day154】LC1626无矛盾的最佳球队 | 动态规划
【每日一题Day154】LC1626无矛盾的最佳球队 | 动态规划
15 0
|
4月前
|
机器人
【每日一题Day343】LC2731移动机器人 | 脑筋急转弯+数学
【每日一题Day343】LC2731移动机器人 | 脑筋急转弯+数学
25 0
|
8月前
|
机器学习/深度学习 存储 C语言
【八大排序(三)】堆排序-搞文学出生的计算机教授
【八大排序(三)】堆排序-搞文学出生的计算机教授
|
10月前
|
C语言 C++
PTA团体程序设计天梯赛-练习集: L1-050 倒数第N个字符串 ( 15分 )
给定一个完全由小写英文字母组成的字符串等差递增序列,该序列中的每个字符串的长度固定为 L,从 L 个 a 开始,以 1 为步长递增。例如当 L 为 3 时,序列为 { aaa, aab, aac, ..., aaz, aba, abb, ..., abz, ..., zzz }。这个序列的倒数第27个字符串就是 zyz。对于任意给定的 L,本题要求你给出对应序列倒数第 N 个字符串。 输入格式: 输入在一行中给出两个正整数 L(2 ≤ L ≤ 6)和 N(≤105)。 输出格式: 在一行中输出对应序列倒数第 N 个字符串。题目保证这个字符串是存在的。 输入样例:
125 0
|
11月前
|
人工智能 算法 C++
【每日算法Day 88】超越妹妹教你如何做这道排序题
【每日算法Day 88】超越妹妹教你如何做这道排序题
|
11月前
高职考技能提升教程009期 求最值与平均值 VB语言 刘金玉编程
高职考技能提升教程009期 求最值与平均值 VB语言 刘金玉编程
|
11月前
高职考技能提升教程008期 掷骰子与冒泡排序 VB语言 刘金玉编程
高职考技能提升教程008期 掷骰子与冒泡排序 VB语言 刘金玉编程
|
存储
【每日一题Day95】LC1815得到新鲜甜甜圈的最多组数 | 状态压缩dp 记忆化搜索
子问题、哪些操作会影响数据:余下的甜甜圈数量left,以及剩余可以选的元素个数 cnt[x]【dfs函数的两个参数->使用状态压缩至一个int类型变量中】
89 0
【每日一题Day95】LC1815得到新鲜甜甜圈的最多组数 | 状态压缩dp 记忆化搜索