div#pop_ad { opacity: 0; }
AD
首页 > 数字货币 > 正文

leetcode1716_go_计算力扣银行的钱

[2021-01-29 16:35:49] 来源: 编辑:wangjia 点击量:
评论 点击收藏
导读: 题目Hercy 想要为购买第一辆车存钱。他 每天 都往力扣银行里存钱。最开始,他在周一的时候存入 1 块钱。从周二到周日,他每天都比前一天多存入 1 块钱。在接下来每一个周一,他都会比 前一个周一
题目
Hercy 想要为购买第一辆车存钱。他 每天 都往力扣银行里存钱。

最开始,他在周一的时候存入 1 块钱。从周二到周日,他每天都比前一天多存入 1 块钱。

在接下来每一个周一,他都会比 前一个周一 多存入 1 块钱。

给你 n ,请你返回在第 n 天结束的时候他在力扣银行总共存了多少块钱。

示例 1:输入:n = 4 输出:10

解释:第 4 天后,总额为 1 + 2 + 3 + 4 = 10 。

示例 2:输入:n = 10 输出:37

解释:第 10 天后,总额为 (1 + 2 + 3 + 4 + 5 + 6 + 7) + (2 + 3 + 4) = 37 。

注意到第二个星期一,Hercy 存入 2 块钱。

示例 3:输入:n = 20 输出:96

解释:第 20 天后,总额为 (1 + 2 + 3 + 4 + 5 + 6 + 7) +

(2 + 3 + 4 + 5 + 6 + 7 + 8) + (3 + 4 + 5 + 6 + 7 + 8) = 96 。

提示:1 = n = 1000
解题思路分析
1、遍历;时间复杂度O(n),空间复杂度O(1)

leetcode1716_go_计算力扣银行的钱

func totalMoney(n int) int { res := 0 for i := 0; i i++ { a, b := i/7, i%7+1 res = res + a + b } return res}

2、数学;时间复杂度O(1),空间复杂度O(1)
func totalMoney(n int) int { res := 0 a, b := n/7, n%7 res = res + (28+(a-1)*7+28)*a/2 res = res + (a+1+a+b)*b/2 return res}
总结
Easy题目,数据量小,可以直接遍历,也可以借助等差数列公式

添加新手交流群:币种分析、每日早晚盘分析

添加助理微信,一对一亲自指导:YoYo8abc

查看更多:

为您推荐