leetcode刷题记录 day 1:

今日重点:

贪心

题目详情:LCP 06. 拿硬币

桌上有 n 堆力扣币,每堆的数量保存在数组 coins 中。我们每次可以选择任意一堆,拿走其中的一枚或者两枚,求拿完所有力扣币的最少次数。

示例 1:

输入:[4,2,1]

输出:4

解释:第一堆力扣币最少需要拿 2 次,第二堆最少需要拿 1 次,第三堆最少需要拿 1 次,总共 4 次即可拿完。

我的代码:

class Solution {
public:
    int minCount(vector<int>& coins) {
int i,num=0;
for(i=0;i<coins.size();i++)
{
    while(coins[i]>2)
    {
    num++;
    coins[i]-=2;
    }
    num++;
}
return num;
    }
};

题目总结感受:

总体来讲已经尽可能的在缩小存储空间的使用,但大概占用还是在8.0MB以上,因为只能一次取一或两个,所以贪心算法主要先对每一堆进行分析求每一堆可以取多少个两个,然后判断一下是否加1,最后把每一堆的次数加在一起,一共coins.size()堆。但是我的算法在循环中加了循环,导致每一个coin[i]都要循环一次,导致时间复杂度从正常的O(n)变成了O(n^2),浪费了时间和空间。所以还是应该尽量的少做循环,少定义变量。

官方题解:

在这里插入图片描述

作者:力扣官方题解
链接:https://leetcode.cn/problems/na-ying-bi/solutions/212911/na-ying-bi-by-leetcode-solution/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值