LeetCode 1589. 所有排列中的最大和

Leetcode 1589. 所有排列中的最大和(有思路但超时) 有一个整数数组 nums ,和一个查询数组 requests ,其中 requests[i] = [starti, endi] 。第 i 个查询求 nums[starti] + nums[starti + 1] + … + nums[endi - 1] + nums[endi] 的结果 ,starti 和 endi 数组索引都是 从 0 开始 的。你可以任意排列 nums 中的数字,请你返回所有查询结果之和的最大值。由于答案可能会很大,请你将它对 109 + 7 取余 后返回。示例 1: 示例 2: 示例 阅读详情

题目链接:LeetCode 1589. 所有排列中的最大和

题意: 

有一个整数数组 nums ,和一个查询数组 requests ,其中 requests[i] = [starti, endi] 。第 i 个查询求 nums[starti] + nums[starti + 1] + ... + nums[endi - 1] + nums[endi] 的结果 ,starti 和 endi 数组索引都是 从 0 开始 的。

你可以任意排列 nums 中的数字,请你返回所有查询结果之和的最大值。

由于答案可能会很大,请你将它对 109 + 7 取余 后返回。

示例 1:

输入:nums = [1,2,3,4,5], requests = [[1,3],[0,1]]
输出:19
解释:一个可行的 nums 排列为 [2,1,3,4,5],并有如下结果:
requests[0] -> nums[1] + nums[2] + nums[3] = 1 + 3 + 4 = 8
requests[1] -> nums[0] + nums[1] = 2 + 1 = 3
总和为:8 + 3 = 11。
一个总和更大的排列为 [3,5,4,2,1],并有如下结果:
requests[0] -> nums[1] + nums[2] + nums[3] = 5 + 4 + 2 = 11
requests[1] -> nums[0] + nums[1] = 3 + 5  = 8
总和为: 11 + 8 = 19,这个方案是所有排列中查询之和最大的结果。

提示:

  • n == nums.length
  • 1 <= n <= 10^5
  • 0 <= nums[i] <= 10^5
  • 1 <= requests.length <= 10^5
  • requests[i].length == 2
  • 0 <= start[i] <= end[i] < n

 

解题思路:

  由于数据量大,所以不能够暴力给某个数加,需要优化

区间左边++, 区间右边--

这样前缀和就是当前的数字出现的次数

const int maxn = 1e5+5;
const int mod = 1e9+7;
class Solution {
public:
	long long cnt[maxn];
    int maxSumRangeQuery(vector<int>& nums, vector<vector<int>>& requests) {
		memset(cnt, 0, sizeof(cnt));
		sort(nums.begin(), nums.end());
		int n = nums.size();
		int r = requests.size();
		for(int i = 0; i < r; i++) {
			cnt[requests[i][0]]++;    // 左区间++
			cnt[requests[i][1]+1]--;  // 右区间--
		}
		for(int i = 1; i < n; i++) {
			cnt[i] += cnt[i-1];
		}
		sort(cnt, cnt+n);
		long long ans = 0;
		for(int i = 0; i < n; i++) {
			ans = (ans + cnt[i] * nums[i]) % mod;
		}
		return ans;
    }
};
RTKLIB模糊度固定实战:三种模式对比与部分模糊度固定代码解析 本文深入解析RTKLIB中模糊度固定的三种核心模式(continuous、instantaneous、fix and hold),对比其性能与适用场景,并详细拆解了部分模糊度固定技术的源码实现。通过实战案例与代码级解析,为GNSS高精度定位开发者提供了在不同数据特性下提升固定成功率的优化思路与配置建议。 阅读详情

相关推荐

creo二次开发使用映射

在creo进行二次开发时,一些无法直接通过访问底层代码来对特征进行操作,比如“镜像装配”,这个时候就可以使用映射(Mapkey)来完成一键镜像。 注:这是镜像装配的代码 ProError status; ProMacro macro; wstring Macro; strMacro = L"mapkey(continued) ~ Command ProCmdMirrorAssem ; mapkey(continued) ~ Activate mirror_component_dialog Sy

qq_49328512的博客 1607

Leetcode 最大的可组合区间。

给定一个数组A[] 从中选取若干个数求和为sum sum=1 sum=2 依次从1开始直到一个第一个不能组合出的数,那么最大可组合区间为:【1,sum】 基本思路,对原先数组排序。 维护一个变量sum 表示当前能够组合成的数的区间 【1,sum】 对于新来的数a[i] 如果a[i]>sum+1 那么break 最终的可组合区间为【1,sum】 如果a[i]<=sum+1 那么sum+=a[i] 即可组合区间为【1,sum+a[i]】 证明①: 如果a[i]>...

一只老风铃 756

VUE3如何使得大屏自适应的几种方法?

16:9。

weixin_42711805的博客 1万+

【Leetcode】所有排列中的最大和

第35场双周赛第二题: 有一个整数数组 nums ,和一个查询数组 requests ,其中 requests[i] = [starti, endi] 。第 i 个查询求 nums[starti] + nums[starti + 1] + ... + nums[endi - 1] + nums[endi] 的结果 ,starti 和 endi 数组索引都是 从 0 开始 的。 你可以任意排列 nums 中的数字,请你返回所有查询结果之和的最大值。 由于答案可能会很大,请你将它对 10^9 + 7 取余 后返

在所不辞的博客 2461

Ubuntu18.04 SoftRoCE安装教程

目标:创建两台Ubuntu18.04虚拟机,安装SoftRoCE环境,一台作为Server,一台作为Client,模拟RDMA通信环境,熟悉RDMA的通信方式。

GGGYL111的博客 1548

COMSOL解的继承

COMSOL解的继承1. 应用场景2. 实现方法2.1. 添加研究步骤2.2. 引用研究 根据参考文献整理而来,原文见: http://blog.sina.com.cn/s/blog_4a0a8b5d010126w5.html https://www.zhihu.com/question/371867999/answer/1309194094 个人学习笔记,如有疏漏,欢迎补充 1. 应用场景 在COMSOL模拟中,一次求解之后往往遇到以下几种情况需要用到解的继承: 1)瞬态求解的继续运算。例如初始设定求解1

jessica0307的博客 1万+

Leetcode刷题56. 合并区间

给出一个区间的集合,请合并所有重叠的区间。 示例 1: 输入: intervals = [[1,3],[2,6],[8,10],[15,18]] 输出: [[1,6],[8,10],[15,18]] 解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6]. 示例2: 输入: intervals = [[1,4],[4,5]] 输出: [[1,5]] 解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。 来源:力扣(LeetCode) 链接:https://leetcode.

Bonbon_wen的博客 469

MySQL安装最后启动报错--Job for mysqld.service failed because the control process exited with error code. See

MySQL安装最后启动报错: [root@localhost mysql]# systemctl start mysqld Warning: mysqld.service changed on disk. Run 'systemctl daemon-reload' to reload units. Job for mysqld.service failed because the control process exited with error code. See "systemctl status m

chenchen的博客 2746

LeetCode——线段树解决区间总和问题

待写 转载于:https://www.cnblogs.com/Booker808-java/p/8978071.html

aier0323305的博客 343

大模型量化方法总结

本文主要对大模型量化方法进行了总结,希望对学习大语言模型的同学们有所帮助。 文章目录 1. 前言 2. 模型精度 3. 量化方法 3.1 方法一 3.2 方法二 3.3 方法三

herosunly的博客 1万+

车载以太网-TC8测试

TC8测试的用例数量 TC8测试基本流程 TC8测试内容

天赐好车的博客 3617

【算法专题】区间最大和

区间最大和 1. 概述 此类问题一般是:给出一个序列,让从中选出一些连续的不相交子序列,使得选出的子序列和最大。 子区间长度可能不定,也可能固定。选出的区间数可能是一个,也可能是多个。 如下给出了三个例题: Leetcode 0053 最大子序和:选出一个子区间,长度不定; AcWing 1051. 最大的和:选出两个子区间,长度不定; Leetcode 0689 三个无重叠子数组的最大和:选出三个子区间,长度都相同。可以扩展为选出多个子区间。 2. 例题 Leetcode

weixin_42638946的博客 7933

【ROS机器人系统】自主导航+YOLO目标检测+语音播报

完成自主导航功能,并在小车移动至指定地点的过程中,通过机器人的摄像头检测导航途中所见物体,识别出物体的种类(框选出不同物体并标注识别结果),结合科大讯飞语音合成模块对识别结果进行语音播报。..............................

南京大学软件工程硕士在读 2万+

[LeetCode解题报告] 1589. 所有排列中的最大和

前缀和 差分数组 +IUPQ

liuliangcan的博客 441

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

leetcode1589. 所有排列中的最大和(Python3、c++)

文章目录leetcode1589. 所有排列中的最大和方法:排序+差分思路:代码:Python3:cpp:结果: leetcode1589. 所有排列中的最大和 有一个整数数组 nums ,和一个查询数组 requests ,其中 requests[i] = [starti, endi] 。第 i 个查询求 nums[starti] + nums[starti + 1] + ... + nums[endi - 1] + nums[endi] 的结果 ,starti 和 endi 数组索引都是 从 0 开始

weixin_43422466的博客 570

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

【力扣题解】1589. 所有排列中的最大和

前缀和

爱做梦的猪的博客 1903

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

1589. 所有排列中的最大和 来源:力扣

文章目录题目介绍题目分析 题目介绍 有一个整数数组 nums ,和一个查询数组 requests ,其中 requests[i] = [starti, endi] 。第 i 个查询求 nums[starti] + nums[starti + 1] + … + nums[endi - 1] + nums[endi] 的结果 ,starti 和 endi 数组索引都是 从 0 开始 的。 你可以任意排列 nums 中的数字,请你返回所有查询结果之和的最大值。 由于答案可能会很大,请你将它对 109 + 7 取余

m0_56600567的博客 227

Leetcode 1589: 所有排列中的最大和

题目描述 有一个整数数组nums,和一个查询数组requests,其中requests[i] = [starti, endi]。第i个查询求nums[starti] + nums[starti + 1] + ... + nums[endi - 1] + nums[endi]的结果,starti 和endi数组索引都是 从 0 开始 的。 你可以任意排列 nums中的数字,请你返回所有查询结果之和的最大值。 由于答案可能会很大,请你将它对109 + 7取余后返回。 ...

weixin_35338624的博客 221

leetcode1589. 所有排列中的最大和

题目大意 有一个整数数组 nums ,和一个查询数组 requests ,其中 requests[i] = [starti, endi] 。第 i 个查询求 nums[starti] + nums[starti + 1] + … + nums[endi - 1] + nums[endi] 的结果 ,starti 和 endi 数组索引都是 从 0 开始 的。 你可以任意排列 nums 中的数字,请你返回所有查询结果之和的最大值。 由于答案可能会很大,请你将它对 109 + 7 取余 后返回。 输入:nums

大腿壮的博客 445

LeetCode 1589. 所有排列中的最大和 JAVA

有一个整数数组 nums ,和一个查询数组 requests ,其中 requests[i] = [starti, endi] 。第 i 个查询求 nums[starti] + nums[starti + 1] + … + nums[endi - 1] + nums[endi] 的结果 ,starti 和 endi 数组索引都是 从 0 开始 的。 你可以任意排列 nums 中的数字,请你返回所有查询结果之和的最大值。 由于答案可能会很大,请你将它对 109 + 7 取余 后返回。 示例 1: 输入:nu

sinb妃的博客 187

【数据结构-差分】力扣1589. 所有排列中的最大和

输入:nums = [1,2,3,4,5,10], requests = [[0,2],[1,3],[1,1]]解释:一个和最大的排列为 [4,10,5,3,2,1] ,查询结果分别为 [19,18,10]。输入:nums = [1,2,3,4,5], requests = [[1,3],[0,1]]输入:nums = [1,2,3,4,5,6], requests = [[0,1]]解释:一个总和最大的排列为 [6,5,4,3,2,1] ,查询和为 [11]。总和为:8 + 3 = 11。

sjsjs11的博客 780

两个数组中对应的下标的值合成一个新的数组_leetcode第35双周赛第二题leetcode1589. 所有排列中的最大和...

leetcode1589. 所有排列中的最大和有一个整数数组 nums ,和一个查询数组 requests ,其中 requests[i] = [starti, endi] 。第 i 个查询求 nums[starti] + nums[starti + 1] + ... + nums[endi - 1] + nums[endi] 的结果 ,starti 和 endi 数组索引都是 从 0 开始 的。...

weixin_39615499的博客 129

LeetCode 1589. 所有排列中的最大和***

具体思路: 记录,但是不用差分数组,会直接爆; 具体代码: class Solution { public: bool static cmp(int a,int b){ return a>b; } int maxSumRangeQuery(vector<int>& nums, vector<vector<int>>& requests) { int n=nums.size();

m0_66776925的博客 425

力扣1589——所有排列中的最大和(贪心+差分前缀和)

思路 首先转换思路。要结果最大,因为nums可以随便排,那就是询问次数最多的地方放最大值,次多的放次大值,以此类推。 下面就需要统计询问中,各个位置询问次数,然后次数和值分别排序,按要求相乘累加即是答案; 一种朴素的思想是在每个询问中,遍历首到尾,依次增加中间出现位置的次数,但会超时 vector<int> count(n, 0); for(auto x : requests) { for(int i = x[0]; i <= x[1]; i..

lllzzzhhh2589的记录 501

LeetCode 1589. 所有排列中的最大和(差分)

题意: 有一个整数数组 nums ,和一个查询数组 requests ,其中 requests[i] = [starti, endi] 。 第 i 个查询求 nums[starti] + nums[starti + 1] + ... + nums[endi - 1] + nums[endi] 的结果 , starti 和 endi 数组索引都是 从 0 开始 的。 你可以任意排列 nums 中的数字,请你返回所有查询结果之和的最大值。 由于答案可能会很大,请你将它对 109 + 7 取余 后返回。 1

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 363

LeetCode题解(1589):所有排列中的最大和(Python)

题目:原题链接(中等) 标签:贪心算法、差分数组、线段树 解法 时间复杂度 空间复杂度 执行用时 Ans 1 (Python) O(NlogN)O(NlogN)O(NlogN) O(N)O(N)O(N) 314ms (38%) Ans 2 (Python) Ans 3 (Python) 解法一: class Solution: def maxSumRangeQuery(self, nums: List[int], requests: List[List[int

长行 465
上一篇: LeetCode 1588. 所有奇数长度子数组的和
下一篇: Redis之字符串类型
error0318
博客等级 码龄9年 57粉丝 515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值