2020-09-04

每日学习一个算法——重新排列数组(今天有时间,多写一篇)

 


题目

给你一个数组 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,6,16,17]
 

提示:

1 <= nums.length <= 1000
-10^6 <= nums[i] <= 10^6

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/running-sum-of-1d-array


提示:以下是本篇文章正文内容,下面案例可供参考

一、解题思路

个人的解决方法是,做一个嵌套循环,外部循环控制循环次数(即元素个数),内部循环控制前几个数相加,每次内部循环结束,就将计算的值赋值给Sums[i]。

二、代码实现

1.第一遍

public static int[] jiShu(int[] num){
        int[] sums = new int[num.length];
        for (int i = 0; i < num.length; i++) {
            int M=0;
            for (int j = 0; j <= i; j++) {
                M=M+num[j];
            }
            sums[i]=M;
        }
        return sums;
    }

结果天杀的,代码占内存只超过10%的人,运行速度只超过5%的人,看来还是菜。 

哦,结果第二次提交,同样的代码,运行速度就超过90%的人了?搞我是吧。

2.第二遍

public static int[] jiShu(int[] num){
        for (int i = 1; i < num.length; i++) {
            num[i] = num[i-1]+num[i];
        }
        return num;
    }

还就那个,不需要定义新数组,i直接从1开始,反正第一个数的动态和就是自己本身。

然后比如说,num[2]=num[0]+ num[1]+num[2],num[1]=num[0]+ num[1],所以说,num[2]=num[1]+num[2],以此类推,动态和不就是本身加之前的动态和吗。

总结

知识还是浅薄,大佬们的代码又简单又快,多多学习吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值