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

chatgpt/2023/9/27 17:12:27

英雄力量【LC2681】

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

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

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

妙哉

  • 思路

    • 对于子序列而言,数组元素顺序不影响结果,因此先将数组排序

    • 枚举每个元素作为子序列的最小值,那么元素 n u m s [ i ] nums[i] nums[i]作为最小值的子序列的贡献为
      n u m s [ i ] ∗ ( n u m s [ i ] 2 + n u m s [ i + 1 ] 2 + 2 ∗ n u m s [ i + 2 ] 2 . . . + 2 n − i − 2 ∗ n u m s [ n − 1 ] ) = n u m s [ i ] 3 + n u m s [ i ] ∗ ( n u m s [ i + 1 ] 2 + 2 ∗ n u m s [ i + 2 ] 2 . . . + 2 n − i − 2 ∗ n u m s [ n − 1 ] ) = n u m s [ i ] 3 + p nums[i]*(nums[i]^2+nums[i+1]^2+2*nums[i+2]^2 ...+2^{n-i-2}*nums[n-1])\\ =nums[i]^3+nums[i]*(nums[i+1]^2+2*nums[i+2]^2 ...+2^{n-i-2}*nums[n-1])\\ =nums[i]^3+p nums[i](nums[i]2+nums[i+1]2+2nums[i+2]2...+2ni2nums[n1])=nums[i]3+nums[i](nums[i+1]2+2nums[i+2]2...+2ni2nums[n1])=nums[i]3+p

    • 实现时从右往左枚举左小指,先将 n u m s [ i ] 3 nums[i]^3 nums[i]3累加至结果,然后维护变量 p p p,每次将 n u m s [ i ] ∗ p nums[i]*p nums[i]p累加至结果,再令 p = p ∗ 2 + n u m s [ i ] 2 p= p *2+nums[i]^2 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 ) \mathcal{O}(\log n) O(logn)
      • 空间复杂度: O ( n log ⁡ n ) \mathcal{O}(n \log n) O(nlogn)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-5314775.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

【使用 DSP 滤波器加速速度和位移】使用信号处理算法过滤加速度数据并将其转换为速度和位移研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

[STL]list使用介绍

[STL]list使用 注:本文测试环境是visual studio2019。 文章目录 [STL]list使用1. list介绍2. 构造函数3. 迭代器相关函数begin函数和end函数rbegin函数和rend函数 4. 容量相关函数empty函数size函数 5. 数据修改函数push_back函数和pop_back函数push_front函数和pop…

[USACO06JAN] The Grove S

题目 思路 一眼bfs 为了保证bfs能够绕一个圈,我们将这个联通块的最下面的点的下方割去,如图 绿色的地方就是割去的地方,然后我们再加个判断,使bfs从起点出发转一圈,再把这条分割线的左右两边步数最小连起来&#xff…

pytorch+GPU跑模型时 nvrtc: error: failed to open nvrtc-builtins64_117.dll

1.先检查自己cuda版本: print(torch.version.cuda) #查看cuda版本 print(torch.cuda.is_available()) # 查看cuda是否可用 print(torch.cuda.device_count()) # 查看可行的cuda数目如果版本高于11建议先降版本,然后再试下。 2.重新安装nvrtc-builtin…

C#时间轴曲线图形编辑器开发1-基本功能

目录 一、前言 1、简介 2、开发过程 3、工程下载链接 二、基本功能实现 1、绘图面板创建 (1)界面布置 (2)显示面板代码 (3) 面板水平方向、竖直方向移动功能实现 (4)面板放…

jq——页面滚动到显示区域,再执行动画——基础积累

今天郑大东同事向我显摆了一个他做的动画,效果如下: 使用场景 当页面滚动到相应区域时,再执行里面的动画,也就是下图中右侧的一层层的显示动画,无论是向上滚动页面还是向下滚动页面。 下面直接上代码: …

python pandas数据处理相关

基本数据结构 pandas 的基本数据结构对象:pandas.core.frame.DataFrame 比如我请求一个股票列表数据: data api.daily(ts_code002655.SZ, start_date20220701, end_date20230726)返回的数据结构data是这样的: 和excel差不多,…

学习记录——TransNormerLLM

Scaling TransNormer to 175 Billion Parametes 线性注意力的Transformer大模型 2023 Transformer 存在局限。首要的一点,它们有着对于序列长度的二次时间复杂度,这会限制它们的可扩展性并拖累训练和推理阶段的计算资源和时间效率。 TransNormerLLM 是首…
推荐文章