力扣-1508 子数组和排序后的区间和
@[TOC]力扣-1508 子数组和排序后的区间和
题目描述
给你一个数组 nums ,它包含 n 个正整数。你需要计算所有非空连续子数组的和,并将它们按升序排序,得到一个新的包含 n * (n + 1) / 2 个数字的数组。
请你返回在新数组中下标为 left 到 right (下标从 1 开始)的所有数字和(包括左右端点)。由于答案可能很大,请你将它对 10^9 + 7 取模后返回。
示例
输入:nums = [1,2,3,4], n = 4, left = 1, right = 5
输出:13
解释:所有的子数组和为 1, 3, 6, 10, 2, 5, 9, 3, 7, 4 。将它们升序排序后,我们得到新的数组 [1, 2, 3, 3, 4, 5, 6, 7, 9, 10] 。下标从 le = 1 到 ri = 5 的和为 1 + 2 + 3 + 3 + 4 = 13 。
这里我解释一下,为什么所有的子数组和为什么是1, 3, 6, 10, 2, 5, 9, 3, 7, 4,
题目说明了。需要计算的是非空连续子数组的和,因此
前四个,1,3,6,10为数组{1},{1,2},{1,2,3},{1,2,3,4}
接着三个,2,5,9为数组{2},{2,3},{2,3,4}
接着后面两个,3,7为数组{3},{3,4}
最后一个就是它本身{4}
源代码
class Solution {
public:int rangeSum(vector<int>& nums, int n, int left, int right) {if(nums.empty()) return 0; //如果传递的容器数组为空,则直接返回0const int MODULO = 1000000007;vector<int> num; //定义一个新的容器int count=0;for(int i=0;i<n;i++) //上面的文字解释{count=0;for(int k=i;k<n;k++){count+=nums[k];num.push_back(count);}}sort(num.begin(),num.end()); //将num按升序排序int sum=0;for(int i=left-1;i<right;i++) sum=(sum+num[i])%MODULO;//注意这里一定是sum=(sum+num[i])%MODULO,不能写成sum+=num[i]%MODULO,会造成溢出的情况return sum;}
};
力扣-1508 子数组和排序后的区间和相关推荐
- 125.(5445)子数组和排序后的区间和(第30场双周赛)
题目描述: 给你一个数组 nums ,它包含 n 个正整数.你需要计算所有非空连续子数组的和,并将它们按升序排序,得到一个新的包含 n * (n + 1) / 2 个数字的数组. 请你返回在新数组中下 ...
- 力扣 643. 子数组最大平均数 I 滑动窗口
https://leetcode-cn.com/problems/maximum-average-subarray-i/ 思路:简单不谈,维护一个大小为 k k k的窗口滑就完事了. class So ...
- LeetCode 581. 最短无序连续子数组(排序单调栈)
文章目录 1. 题目 2. 解题 2.1 排序 2.2 4次遍历 2.3 单调栈 1. 题目 给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序. ...
- 力扣解法汇总969-煎饼排序
原题链接:力扣 描述: 给你一个整数数组 arr ,请使用 煎饼翻转 完成对数组的排序. 一次煎饼翻转的执行过程如下: 选择一个整数 k ,1 <= k <= arr.length 反转子 ...
- 将矩阵转为一行_LeetCode 力扣官方题解 | 861. 翻转矩阵后的得分
点击上方蓝字设为星标 下面开始今天的学习- 力扣 861. 翻转矩阵后的得分(点击文末阅读原文查看题目)题目描述有一个二维矩阵 A 其中每个元素的值为 0 或 1 .移动是指选择任一行或列,并转换该 ...
- 我的力扣算法845-数组中的最长山脉
哈哈,真的放了一天假. 好了,废话不多说,我们先开始今天的力扣每日一题: 虽然说这次的算法是中等难度,但是相信通过时间和不断的尝试,各位都可以完成出来,这里介绍一种取巧的方式进行问题的解决. 既然是找 ...
- 力扣1005. K 次取反后最大化的数组和(自定义排序)
1005. K 次取反后最大化的数组和 自定义根据绝对值排序 class Solution {public int largestSumAfterKNegations(int[] nums, int ...
- 【力扣网练习题】删除排序数组中的重复项
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成. 示例 1 ...
- easyui的tree获取父节点_力扣 1519——子数中标签相同的节点数
本题主要在于对树这种数据结构的考察,以及深度优先遍历的使用,优化时可以采取空间换时间的策略. 原题 给你一棵树(即,一个连通的无环无向图),这棵树由编号从 0 到 n - 1 的 n 个节点组成,且恰 ...
- 力扣 2611. 老鼠和奶酪 排序
题目 有两只老鼠和 n 块不同类型的奶酪,每块奶酪都只能被其中一只老鼠吃掉. 下标为 i 处的奶酪被吃掉的得分为: 如果第一只老鼠吃掉,则得分为 reward1[i] . 如果第二只老鼠吃掉,则得分为 ...
最新文章
- Deep Non-Line-of-Sight Reconstruction:深度非视域重建
- stm32 基本定时器TIM6、TIM7的使用
- 【大白话系列】带你进入网络的世界【都说计网难,一篇即可激发你的兴趣】
- winxp 安装apache php,WinXP-Apache-PHP5-MySQL-phpMyAdmin环境安装
- 神奇!一行代码实现删除某集合下标20-30的元素
- oracle全局索引 效率,关于插入,全局索引和局部索引的情况,那种效率高
- mysql 查看trige_mysql查看所有存储过程,函数,视图,触发器,表
- OpenVINO InferenceEngine之Core类
- 深度学习 《BiRNN》
- 推荐95个极富创意的单页网站设计实例欣赏
- UI设计素材|APP引导页简约风格特征
- Spark文本文件输入输出
- Exception.ToString()使用及其他方法比较
- linux里面的命令
- C++#ifndef/#define/#endif的用法
- 十年经验教你如何学习嵌入式系统
- qq 能上但是打不开网页
- itunes显示无法更新服务器失败怎么办啊,更新iTunes出现错误 iTunes更新失败解决方案...
- Collectors.reducing总结
- 3D游戏中角色的换装原理-落樱之剑实例图文详细剖析(JME3,JMonkeyEngine游戏开发)...