每日一道java笔试题——leetCode:1508. 子数组和排序后的区间和(
每日一道java笔试题——leetCode:1508. 子数组和排序后的区间和(中等)
每日一道java笔试题——leetCode:1508. 子数组和排序后的区间和(中等)
给你一个数组 nums ,它包含 n 个正整数。你需要计算所有非空连续子数组的和,并将它们按升序排序,得到一个新的包含 n * (n + 1) / 2 个数字的数组。
请你返回在新数组中下标为 left 到 right (下标从 1 开始)的所有数字和(包括左右端点)。由于答案可能很大,请你将它对 10^9 + 7 取模后返回。
示例 1:
输入: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 。
示例 2:
输入:nums = [1,2,3,4], n = 4, left = 3, right = 4
输出:6
解释:给定数组与示例 1 一样,所以新数组为 [1, 2, 3, 3, 4, 5, 6, 7, 9, 10] 。下标从 le = 3 到 ri = 4 的和为 3 + 3 = 6 。
示例 3:
输入:nums = [1,2,3,4], n = 4, left = 1, right = 10
输出:50
代码如下:
package cn.lbl.face.leetCode;
import java.util.Arrays;
/*
nums = [1,2,3,4] ,4, 1,5
1, 3, 6, 10, 2, 5, 9, 3, 7, 4
*/
public class 子数组和排序后的区间和 {
public static int rangeSum(int[] nums, int n, int left, int right) {
final int MODULO=1000000007;
int sumsLength=n * (n + 1) / 2;
int[] sums = new int[sumsLength];
int index=0;
int sum=0;
for (int i = 0; i
for (int j = i; j
sum+=nums[j];
sums[index++]=sum;
}
sum=0;
}
Arrays.sort(sums);
for (int i = left-1; i
sum=(sum+sums[i])%MODULO;
}
return sum;
}
public static void main(String[] args) {
int sum = rangeSum(new int[]{1, 2, 3, 4}, 4, 1, 5);
System.out.println(sum);
}
}
每日一道java笔试题——leetCode:1508. 子数组和排序后的区间和(相关教程
2020-9-14Java关于==和equals的区别
2020-9-14Java关于==和equals的区别 Java关于==和equals的区别 首先先看下面两段代码 第一段代码 Demo1.class package equals;public class Demo1 {public static void main(String[] args) {Person p1 = new Person(张三,1); Person p2 = new Person(张三,1)
java -- GUI程序设计之基于布局管理器的布局
java -- GUI程序设计之基于布局管理器的布局 创建GUI程序最重要的是界面布局。Swing采用两种布局方式:无布局管理器布局和基于布局管理器的布局。这里主要介绍基于布局管理器的布局。 基于布局管理器的布局首先通过调用容器类(JFrame、JPanel等)的setLayou
Java面向对象编程(OOP)
Java面向对象编程(OOP) 面向对象是抽象出的设计架构,面向过程是具体的执行方法 面向对象编程本质: 以类的方式组织代码,以对象的形式封装数据 三大特性 - 封装 - 继承 - 多态 对象是具体的事物;类是抽象的,是对对象的抽象,是对象的模板 new 是创建对象
[java]两个变量的值进行交换(3种方法)
[java]两个变量的值进行交换(3种方法) class TestExer1 {public static void main(String[] args) {int m=12;int n=5;System.out.println(m:+m+\n+n:+n);System.out.println(这是方法一);//方法一:提供一个临时变量int temp=m;m=n;n=temp;System.out.print
Could not get JDBC Connection; nested exception is java.sql
Could not get JDBC Connection; nested exception is java.sql.SQLNonTransientConnectionException异常处理 org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLNonTransientCo
JAVA数据结构与算法之插入排序
JAVA数据结构与算法之插入排序 最近面临毕业就业,在复习数据结构与算法,为了更好地掌握,加深印象,所以决定写一些博客来知识复现。 温馨提示:这篇博客可能不适合刚学数据结构的新手。 插入排序(Insertion Sorting)的基本思想是:把 n 个待排序的元素看成为
java 注解结合 spring aop 自动输出日志新增拦截器与过滤器
java 注解结合 spring aop 自动输出日志新增拦截器与过滤器 auto-log auto-log 是一款为 java 设计的自动日志监控框架。 前面已经写过了两篇: java 注解结合 spring aop 实现自动输出日志 java 注解结合 spring aop 实现日志 traceId 唯一标识 经过前面2篇的
第三次学JAVA再学不好就吃翔(part117)--单例设计模式
第三次学JAVA再学不好就吃翔(part117)--单例设计模式 学习笔记,仅供参考,有错必纠 文章目录 多线程 单例设计模式 饿汉式 懒汉式 第三种格式 Timer类 线程的五种状态 单例设计模式 单例设计模式,即保证类在内存中只有一个对象,如何保证类在内存中只有一个