@[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 子数组和排序后的区间和相关推荐

  1. 125.(5445)子数组和排序后的区间和(第30场双周赛)

    题目描述: 给你一个数组 nums ,它包含 n 个正整数.你需要计算所有非空连续子数组的和,并将它们按升序排序,得到一个新的包含 n * (n + 1) / 2 个数字的数组. 请你返回在新数组中下 ...

  2. 力扣 643. 子数组最大平均数 I 滑动窗口

    https://leetcode-cn.com/problems/maximum-average-subarray-i/ 思路:简单不谈,维护一个大小为 k k k的窗口滑就完事了. class So ...

  3. LeetCode 581. 最短无序连续子数组(排序单调栈)

    文章目录 1. 题目 2. 解题 2.1 排序 2.2 4次遍历 2.3 单调栈 1. 题目 给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序. ...

  4. 力扣解法汇总969-煎饼排序

    原题链接:力扣 描述: 给你一个整数数组 arr ,请使用 煎饼翻转 完成对数组的排序. 一次煎饼翻转的执行过程如下: 选择一个整数 k ,1 <= k <= arr.length 反转子 ...

  5. 将矩阵转为一行_LeetCode 力扣官方题解 | 861. 翻转矩阵后的得分

    点击上方蓝字设为星标 下面开始今天的学习- 力扣  861. 翻转矩阵后的得分(点击文末阅读原文查看题目)题目描述有一个二维矩阵 A 其中每个元素的值为 0 或 1 .移动是指选择任一行或列,并转换该 ...

  6. 我的力扣算法845-数组中的最长山脉

    哈哈,真的放了一天假. 好了,废话不多说,我们先开始今天的力扣每日一题: 虽然说这次的算法是中等难度,但是相信通过时间和不断的尝试,各位都可以完成出来,这里介绍一种取巧的方式进行问题的解决. 既然是找 ...

  7. 力扣1005. K 次取反后最大化的数组和(自定义排序)

    1005. K 次取反后最大化的数组和 自定义根据绝对值排序 class Solution {public int largestSumAfterKNegations(int[] nums, int ...

  8. 【力扣网练习题】删除排序数组中的重复项

    给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成. 示例 1 ...

  9. easyui的tree获取父节点_力扣 1519——子数中标签相同的节点数

    本题主要在于对树这种数据结构的考察,以及深度优先遍历的使用,优化时可以采取空间换时间的策略. 原题 给你一棵树(即,一个连通的无环无向图),这棵树由编号从 0 到 n - 1 的 n 个节点组成,且恰 ...

  10. 力扣 2611. 老鼠和奶酪 排序

    题目 有两只老鼠和 n 块不同类型的奶酪,每块奶酪都只能被其中一只老鼠吃掉. 下标为 i 处的奶酪被吃掉的得分为: 如果第一只老鼠吃掉,则得分为 reward1[i] . 如果第二只老鼠吃掉,则得分为 ...

最新文章

  1. Deep Non-Line-of-Sight Reconstruction:深度非视域重建
  2. stm32 基本定时器TIM6、TIM7的使用
  3. 【大白话系列】带你进入网络的世界【都说计网难,一篇即可激发你的兴趣】
  4. winxp 安装apache php,WinXP-Apache-PHP5-MySQL-phpMyAdmin环境安装
  5. 神奇!一行代码实现删除某集合下标20-30的元素
  6. oracle全局索引 效率,关于插入,全局索引和局部索引的情况,那种效率高
  7. mysql 查看trige_mysql查看所有存储过程,函数,视图,触发器,表
  8. OpenVINO InferenceEngine之Core类
  9. 深度学习 《BiRNN》
  10. 推荐95个极富创意的单页网站设计实例欣赏
  11. UI设计素材|APP引导页简约风格特征
  12. Spark文本文件输入输出
  13. Exception.ToString()使用及其他方法比较
  14. linux里面的命令
  15. C++#ifndef/#define/#endif的用法
  16. 十年经验教你如何学习嵌入式系统
  17. qq 能上但是打不开网页
  18. itunes显示无法更新服务器失败怎么办啊,更新iTunes出现错误 iTunes更新失败解决方案...
  19. Collectors.reducing总结
  20. 3D游戏中角色的换装原理-落樱之剑实例图文详细剖析(JME3,JMonkeyEngine游戏开发)...

热门文章

  1. Java基础语法-方法的定义、调用以及static关键字的使用
  2. 【OS】Process Thread
  3. Fragment与Radiogroup联动,经典的主界面布局。使用show和hide的方式实现;
  4. 【C++】std::是什么?
  5. multiset 多重集合容器
  6. Android SQLite数据库 SQLiteOpenHelper的操作使用
  7. DevExpress 表中数据导出
  8. libsuperuser
  9. MySQL心得1--数据库的基本概念
  10. pip 安装 pytorch环境