【每日一题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

目录
相关文章
|
9月前
|
消息中间件 存储 缓存
kafka 的数据是放在磁盘上还是内存上,为什么速度会快?
Kafka的数据存储机制通过将数据同时写入磁盘和内存,确保高吞吐量与持久性。其日志文件按主题和分区组织,使用预写日志(WAL)保证数据持久性,并借助操作系统的页缓存加速读取。Kafka采用顺序I/O、零拷贝技术和批量处理优化性能,支持分区分段以实现并行处理。示例代码展示了如何使用KafkaProducer发送消息。
|
搜索推荐 API 语音技术
FunClip的基础功能问题之使用FunClip进行智能剪辑的问题如何解决
FunClip的基础功能问题之使用FunClip进行智能剪辑的问题如何解决
1107 0
|
编解码 算法 计算机视觉
HSV
HSV
623 4
|
存储 弹性计算 Linux
Linux:进程调度
Linux:进程调度
136 7
|
C语言
C语言----函数(2)
C语言----函数
120 0
R语言分位数回归、GAM样条曲线、指数平滑和SARIMA对电力负荷时间序列预测
R语言分位数回归、GAM样条曲线、指数平滑和SARIMA对电力负荷时间序列预测
|
容器 Kubernetes Perl
从零开始入门 K8s| 阿里技术专家详解 K8s 核心概念
作者| 阿里巴巴资深技术专家、CNCF 9个 TCO 之一 李响 一、什么是 Kubernetes Kubernetes,从官方网站上可以看到,它是一个工业级的容器编排平台。Kubernetes 这个单词是希腊语,它的中文翻译是“舵手”或者“飞行员”。
19018 1
|
监控 前端开发 搜索推荐
智能呼叫系统关键技术
一、呼叫系统关键技术   一个完整的呼叫系统,一般由PBX(程控交换机)、ACD(自动呼叫分配)交换机、IVR(交互式语音应答)系统、CTI(计算机电话呼叫系统集成)系统、数据库系统、呼叫管理系统、业务处理系统以及座席(业务代表)等组成。用户的呼叫在ACD交换机排队之后,引导到不同的人工受理席,然后以语音或传真等不同方式给予用户相关的业务答复。系统大致可以分为前端和后端两大部分。在系统前   端,CTI是其核心,在计算机与电话呼叫系统集成的基础之上对客户的呼叫进行应答、识别、接续、转移等受理活动;系统后端主要由各种数据库系统如账务系统、业务管理系统以及网络软硬件提供业务支持,保障数据的正确性和
|
Java Maven
Maven变量定义
Maven变量定义