零钱兑换

链接

直接用dfs怕是要超时,有一种巧妙的思路

设一个大小为amount的数组dp,(全部初始化为INT_MAX)对于coins的每一个值,dp[coin]都设为1, 然后,我们可以设想一下,对于某一个i,dp[k]!=INT_MAX, 那么dp[i]是不是有可能等于dp[k]+1(也有可能dp[i]本身就比较小)

既然这样,那么我们让i从1遍历到amount,就能找到最终答案了

class Solution {
public:
    int coinChange(vector<int>& coins, int amount) {
        vector<int>dp(amount+1,INT_MAX);
        dp[0]=0;
       for(int i=0;i<coins.size();i++){
        if(coins[i]<=amount)
        dp[coins[i]]=1;
       }
        for(int i=1;i<=amount;i++){
            for(int coin:coins){
                if(i>coin&&dp[i-coin]!=INT_MAX){
                    dp[i]=min(dp[i], dp[i-coin] + 1);
                }
            }
        }
        if(dp[amount]!=INT_MAX) return dp[amount];
        return -1;
    }
};

时间复杂度:O(amount*k)

空间复杂度:O(amount)

全部评论

相关推荐

晚上和一个老哥聊天,加深了自己对一些事情的思考就是一个人在公共场合敢实名表达自己的感受,自己的思考,自己的观点,是一件需要非常非常大勇气的事情,这意味着你触达内心的想法感受,会被大众所注视,审判,而绝大多数人都会异常在意别人对自己的看法,所以当大规模的眼光都看在你身上的时候,这种压力不是谁都能抗下来的。小一点的是在朋友圈写小作文发表自己内心的想法,之前我是能经常看到不少同学吃一个东西&nbsp;或者&nbsp;去一个地方玩然后长篇大论写下自己感受的朋友圈,但现在我也很少在朋友圈看到这些内容了,大家是长大了,开始忽略这些感受了,还是越来越不愿意拿出来分享了……大一点是直接做自媒体,更大范围地展示自己,直接向全互联网的人述说自己的经历,表达自己的想法,展示自己性感的大脑,让互联网的所有人凝视你,审判你,赞扬你,诋毁你……说实话,这非常像把自己扒光了游街示众的感觉,只有真正在互联网上实名发表过这种口播视频之后,才懂这种感觉有多奇妙哈哈哈我们不说钱不钱的问题,关说对个人能力的提升,这非常锻炼人,非常非常锻炼人,你的表达能力,你的心理素质都在全方面提升,你的心理抗压能力也会不断提升,因为无论怎么说都有人骂你,你说苹果手机好用,都有人骂你叛国贼[捂脸][捂脸][捂脸]一开始最大的障碍就是怕熟人看到,特别尴尬,怕大家议论你,嘲笑你,但其实真的有那么多人关注你吗?真的有那么多人嘲笑你吗?可能都是自己在臆想,出现幻觉了就算真的有人当面嘲笑你,这又怕什么呢,我始终坚信一个真正从0到1在某个领域做成功一件事的人(标准:得到这个领域人的普遍认可)是不会嘲笑一个开始很笨拙的人,因为谁不是这样走过来的?谁一开始就做的很好,谁刚开始做就很随心所欲,是你吗?一个健身大神会嘲笑一个刚入健身房的新手吗?一个高级程序员会嘲笑一个刚学会打hello&nbsp;world的新手吗?一个减肥成功的人会嘲笑刚开始跑几步路就喘的胖子吗?一个作家会嘲笑刚开始写小作文词不达意语句不通顺的菜鸟吗?一个人但凡能嘲笑你,那就证明他没做成哪怕至少一件事,没在一个领域得到绝大多数人的普遍认可,这种人的嘲笑是多么无力,这是他无能的狂怒,他自己不敢,自己半途而废,他怕你做成了,证明他自己是废物而已(这里说话比较难听)从我刚开始从化学跨行当程序员时,我就开始向外展示这些事情,然后无论在现实里还是在互联网上,我都听过非常非常多嘲笑的声音,否定的声音,所以我一度非常敏感,非常脆弱在大二这一年我几乎不敢见人,我每天吃喝拉撒都在实验室的小工位,我怕出去会被人嘲笑,会被否定,因为随随便便一句话我就能蹲在天台哭一晚上,直到我突然进了美团的日常实习,直到我突然进了字节的暑期实习,直到我秋招又拿了字节的offer,这个时候我已经站在高处,我回头看,我向下看,之前那些否定嘲笑的声音早已听不见,我已经在山上了,而他们又在哪呢?而我发现当时那些鼓励我,认可我,支持我的兄弟们,不是那些已经在某个领域取得一定成果的人,就是那些同样在路上的同伴,好像只有这些人,他们才会对蹒跚学步的新手给予鼓励与帮助……最后居然戏剧性地来了一个callback&nbsp;呼应了我大一演小品的一句台词且视他人之疑目如盏盏鬼火大胆地去走你的夜路!这是我自己的亲身经验,也是我想表达,传递的内容,想干什么就去干吧,至于别人怎么看,随他吧,反正弱者才会嘲笑你,强者都会向你伸出援手……
牛友故事会
点赞 评论 收藏
分享
02-01 23:47
已编辑
天津大学 信息技术岗
首先,我不算真正意义上的0实习,曾经在国企做过一段不接触技术的实习工作。我想先谈谈实习对于找工作的作用。在我看来,工作是什么,是你付出符合公司需要的劳动,然后公司给你报酬。所以这里就需要注意,工作的付出肯定是贴合公司的需求的。那么具体一点,就是你的业务部门,或者说你们的组,在做什么工作。那这时候,你作为组里的小leader,你需要招新人来,你最希望的是什么,是这个人很强吗?(当然你不能能力和别人差距太大)其实并非如此。就算是个大神,他来到组里肯定也是做组里需要做的工作,那自然我希望这个新人能够尽快上手来承担组里的工作,早点完成公司的安排。那么,怎么判断这个人能不能尽快上手呢?一段对口的实习当然是最好的,你已经掌握了一定业界在做这项工作的时候,需要一些什么,清楚做工作的一些流程,虽然不可能完全一致吧,但肯定要比完全不知道的人上手更快。所以,这就是实习在求职时带来的好处,你可以向面试官自然地证明,我能很快投入工作。那么没有实习行不行呢,肯定也是行的。首先啊,我坦然承认有实习肯定比没实习更占便宜,但找工作本身就看运气,那么多岗位,那么多候选人,你不知道自己投的这个岗位,和你竞争的是什么样的人,你更不知道和你竞争的人到底会不会落到现在这个岗位,28定律还是成立的,头部的有竞争力的候选者自然会收割一大堆offer,但人就一个人,最终只能去一个地方,自然还能空出来很多。所以说不定你投的这个,最后可能剩下的都是没实习的,又有人肯定可以拿到offer,那自然0实习也是可以拿到offer的。那么假设就是没实习,怎么能在招聘的时候稍微有点优势呢。我觉得第一就是项目。做项目和实习的共同点,就是你在接触工作要用到的一些技术,你有一些做事情的思路,有一些实际的动手经验,这种时候通过面试对你项目细节的考查,大概就能看出来你在做这些事情时,有没有解决问题的能力,那么如果有,其实和实习也差别不大,毕竟我们前面提到的都是对口实习,可哪有那么多对口实习,不同的公司用的技术栈也可以完全不一样,那这时候他们的实习无非就是有人带着做了一个大项目的其中一部分,和自己好好做个项目,并没有差距特别大。最近在做agent的项目,虽然本意是是为了能够毕业,但在做的过程中,我其实发现所谓的agent开发,和传统的后端开发其实差别不太大,agent的思路,架构,用到的一些东西,其实大概率都是公司里早就定好的,现有的成熟的,突破这些底层架构不是开发的职责,所以在这种情况下,其实干的活无非就是把这个东西细节实现一下,然后agent需要调用的tool,在以前不就是正常的开发工作吗,我的感觉上并没有多大的区别。。以此我也想到,面试在说自己项目的细节的时候,还是要好好准备,尽量自己真的动手都写过,清楚这个项目是怎么回事,每一块是干什么的,为什么要这么做,在面试的时候还是可以去展现自己的能力的。三年后又来秋招,转眼离秋招只剩下五个月,是时候开始重拾这些求职的内容了。祝都能好运吧,加油。
为什么有人零实习也能进大...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务