LeetCode一维数组的动态和
一维数组的动态和
题目描述
给你一个数组 nums。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]...nums[i])。
请返回 nums 的动态和。
示例 1:
输入:nums = [1,2,3,4]
输出:[1,3,6,10]
解释:动态和计算过程为 [1, 1+2, 1+2+3, 1+2+3+4]
示例 2:
输入:nums = [1,1,1,1,1]
输出:[1,2,3,4,5]
解释:动态和计算过程为 [1, 1+1, 1+1+1, 1+1+1+1, 1+1+1+1+1]
示例 3:
输入:nums = [3,1,2,10,1]
输出:[3,4,5,16,17]
解释:动态和计算过程为 [3, 3+1, 3+1+5, 3+1+5+10, 3+1+5+10+1]
一得之见(Java)
/**
* @author zhkai
* @date 2021年3月31日10:07:10
*/
public class RunningSum {
/**
* 给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。
* 请返回 nums 的动态和
*
* @param nums 数组
* @return nums 的动态和
*/
public static int[] runningSum(int[] nums) {
int numsLen = nums.length;
if (numsLen == 0) {
return null;
}
int[] result = new int[numsLen];
for (int i = 0; i < numsLen; i++) {
for (int j = 0; j <= i; j++) {
result[i] += nums[j];
}
}
return result;
}
}
他山之石(Java)
/**
* 给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。
* 请返回 nums 的动态和
*
* @param nums 数组
* @return nums 的动态和
*/
public static int[] runningSumTwo(int[] nums){
for( int i = 1 ; i < nums.length ; i++ ){
nums[i] += nums[i-1];
}
return nums;
}
/**
* 给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。
* 请返回 nums 的动态和
*
* @param nums 数组
* @return nums 的动态和
*/
public static int[] runningSumThree(int[] nums) {
int numsLen = nums.length;
int[] result = new int[numsLen];
result[0] = nums[0];
for (int i = 1; i < numsLen; i++) {
result[i] = result[i - 1] + nums[i];
}
return result;
}
效率分析(Java)
输入:nums = {1, 2, 3, 4};
方法一用时:1820300ns
方法二用时:8600ns
方法三用时:11300ns
一得之见(Python)
from typing import List
def running_sum(nums: List[int]) -> List[int]:
"""
给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。
请返回 nums 的动态和
:param nums: 数组
:return: 数组的动态和
"""
nums_len = len(nums)
result = [0 for i in range(nums_len)]
for i in range(nums_len):
for j in range(i + 1):
result[i] += nums[j]
return result
他山之石(Python)
def running_sum_two(nums: List[int]) -> List[int]:
"""
给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。
请返回 nums 的动态和
:param nums: 数组
:return: 数组的动态和
"""
nums_len = len(nums)
res = [nums[0]]
for i in range(1, nums_len):
total = res[i - 1] + nums[i]
res.append(total)
return res
效率分析(Python)
输入:nums = {1, 2, 3, 4};
方法一用时:15700ns
方法二用时:6500ns
LeetCode一维数组的动态和的更多相关文章
- [LeetCode]1480. 一维数组的动态和
给你一个数组 nums .数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]-nums[i]) . 请返回 nums 的动态和. 示例 1: 输入:nums = [1, ...
- JAVASE(八) 数组: 一维数组、二维数组、动态数组、静态数组
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 1.一维数组 1.1 数组的声明和初始化声明方式: String str[]; //不建议使用 Stri ...
- C++动态申请一维数组和二维数组
在平时的编程过程中,我们经常会用到数组来存放数据,我们可以直接申请足够大空间的数组来保证数组访问不会越界,但是即便这样,我们依然不能保证空间分配的足够,而且非常的浪费空间.有时候我们需要根据上面得到的 ...
- 【C语言】-一维数组
数组: 数组是一系列相同类型的有序数据的集合,数组中的每一个元素都是同一个数据类型,所有元素共用一个名字,用下标来区别数组中的每一个元素. C语言中,数组属于构造数据类型.一个数组中含有多个数组元素, ...
- java基础5 (一维)数组和二维数组
本文知识点(目录): 一维数组(一维数组的概念.优点.格式.定义.初始化.遍历.常见异常.内存分析以及常见操作(找最大值.选择排序.冒泡排序等等)) 二维数组(二维数组的遍历.排序.查找.定义. ...
- 《剑指Offer》第1题(Java实现):在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
一.题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该 ...
- 第3章 Java数组(上): 一维数组和二维数组
3.数组及排序算法(2天) 3.1 数组的概述 2课时 3.2 一维数组的使用 3课时 3.3 多维数组的使用 3课时 3.4 数组中涉及到的常见算法 3课时 3.5 Arrays工具类的使用 3课时 ...
- java基础-引用数据类型之一维数组(Array)
java基础-引用数据类型之一维数组(Array) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数组的定义 1>.为什么需要数组 保存一个数据可以定义一个变量,如果要保 ...
- Java程序猿学习C++之数组和动态数组
数组: #include <iostream> using namespace std; //模板函数 template <class T> void dump(T val) ...
随机推荐
- TensorFlow从入门到入坑(1)
初识TensorFlow 一.术语潜知 深度学习:深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法. 深度学 ...
- HTML+CSS基础(HTML篇)
引言 在日常开发Android中,很多时候会遇到和WebView打交道,对CSS HTML JS不是很清楚的话是完不成一些功能的,本篇开始学习HTML,文章的主要内容是总结了慕课网中,HTML+CSS ...
- 字典树(Trie)
终于学会字典树了,真开心(然后就滚过来写总结了). 首先,字典树到底是个什么东西呢?请看下面这段话: 字典树,常被用来保存与查找大量的字符串,它利用了字符串之间的公共前缀来节约时间,但它的空间花费较大 ...
- Luogu P2024 [NOI2001]食物链 | 并查集
题目链接 思路:并查集,因为一开始我们并不知道每一只动物是哪一个种类的,所以我们干脆建立三倍于n的空间,1~n这三分之一用来存第i只动物是A的情况,n+1~2n这三分之一用来存第(i-n)只动物是B的 ...
- Docker配置tomcat端口映射后无法访问(404)
1.配置tomcat端口映射 2.访问测试 3.修改webapps文件,webapps.dist是所需文件 4.虚拟机中重新访问 5.在主机也能访问成功(注意路径为虚拟机IP,不是localhost)
- centos 下安装docker
官方文档比较累赘,简化就三步 1.安装依赖 yum -y install gcc gcc-c++ yum-utils device-mapper-persistent-data lvm2 2.添加re ...
- centos7 使用iptables
关闭selinux,不关闭时,iptables不读取配置文件 重启生效 centos7 中默认的防火墙是firewalld,使用iptables需要先关闭firewalld防火墙,安装iptables ...
- JavaScript 简单介绍
一.简介 JavaScript是一门面向对象的动态语言,他一般用来处理以下任务: 修饰网页 生成HTML和CSS 生成动态HTML内容 生成一些特效 提供用户交互接口 生成用户交互组件 验证用户输入 ...
- PHP、TP6框架及JavaScript的单步调试
目录 一.PHP程序的调试 1. 单个PHP程序的调试 2. PHP框架代码的调试 二.JavaScript程序的调试 三.总结 参考资料:https://www.bilibili.com/video ...
- 问题 A: 喷水装置(一)
题目描述 现有一块草坪,长为20米,宽为2米,要在横中心线上放置半径为Ri的喷水装置, 每个喷水装置的效果都会让以它为中心的半径为实数Ri(0<Ri<15)的圆被湿润,这有充足的喷水装置i ...