leetcode每日一题1716. 计算力扣银行的钱 数学问题 等差数列 这不是高中的知识么 + 逻辑推理

📖本篇内容:leetcode每日一题1716. 计算力扣银行的钱 数学问题 等差数列 这不是高中的知识么 + 逻辑推理

📆 最近更新:leetcode每日一题373. 查找和最小的K对数字有序+找最值 优先队列的堆就对了 看不懂来私我 我手把手教你

🙊个人简介:一只二本院校在读的大三程序猿,本着注重基础,打卡算法,分享技术作为个人的经验总结性的博文博主,虽然可能有时会犯懒,但是还是会坚持下去的,如果你很喜欢博文的话,建议看下面一行~(疯狂暗示QwQ)

🌇 点赞 👍 收藏 ⭐留言 📝 一键三连 关爱程序猿,从你我做起

写在前面

Hello,大家好,可爱又迷人的小付又来了哦~今天睡觉睡不着,只好起来卷一题,阿巴不,不是吧啊sir,这是上天也为了能让我早点睡觉么,简单题,那咱们就快点来解决掉它吧!

题目

  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 + 2 + 3 + 4 + 5 + 6 + 7 = 28这么多钱钱…

如果第一个和第二个星期也都存入成功那么就会有:

(第一个星期存的钱) + 2 + 3 + 4 + 5 + 6 + 7 + 8 = 28 + 28 + 7

以此类推因为每个星期的初始金额+1 后续每天也都 +1 共有7天 所以 也就每次比前一个星期多7块钱

代码实现

class Solution {
    public int totalMoney(int n) {
    	//用来计算有多少周
        int weekNum = n / 7;
        //用来计算在当前这一周的第几天
        int dayIndex = n % 7;
        
        int money = 0;
        //遍历周数 有多少周 就有多少个 28元 + 每周多7元 本周永远比上一周多七块钱
        for (int i = 0; i< weekNum;i++){
            money += 28 + i * 7;
        }
		//遍历一周中的第几天 从第一天到指定的第几天 每天+1 初始值周数为周钱
        for (int i = 1;i<= dayIndex;i++){
            money += i + weekNum;
        }
        return money;
    }
}

执行结果

在这里插入图片描述

代码空间优化

既然上面都推导出来了 那你是不是 能发现规律呢,这不是高中学过的 等差数列么。

代码实现

class Solution {
    public int totalMoney(int n) {
        int weekNum = n / 7;
        int dayIndex = n % 7;
        return (28 * weekNum) 
                + (7 * weekNum * (weekNum - 1) / 2) 
                + (weekNum * dayIndex) 
                + (dayIndex * (dayIndex + 1) / 2);
    }
}

执行结果
在这里插入图片描述

写在最后

2022-1-15 小付坚持打卡哦~

是不是因为明天要打周赛

所以今天力扣特意为我们准备的简单题呢

好啦,睡觉收工

最后

每天进步点 每天收获点

愿诸君 事业有成 学有所获

如果觉得不错 别忘啦一键三连哦~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alascanfu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值