`
haifengyulu
  • 浏览: 15570 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Leetcode Candy

阅读更多

题目:http://oj.leetcode.com/problems/candy/

这道题很多人做了很长时间,从通过率也可以看出来。我的第一想法是从前往后遍历,如果i+1的rating大于i,则i+1的candy等于i的candy+1;如果小于,则从i开始往前遍历,直到处理完所有rating大且candy小于等于的情况,然后继续这个过程。这个思路代码实现起来稍微有点麻烦,而且时间复杂度是O(n平方)。

后者仔细想了一下,其实不用这么复杂,只需从前往后扫描(处理i+1的rating大于i的情况)+从后往前扫描(i的rating大于i+1的情况) 两次遍历即可,具体代码如下:

 

public class Solution {
    public int candy(int[] ratings) {
        int[] candies=new int[ratings.length];
        Arrays.fill(candies, 1);
        for(int i=1;i<ratings.length;i++){
            if(ratings[i]>ratings[i-1])
                candies[i]=candies[i-1]+1;
        }
        for(int i=ratings.length-2;i>=0;i--){
            if(ratings[i]>ratings[i+1]&&candies[i]<=candies[i+1])
                candies[i]=candies[i+1]+1;
        }
        int sum=0;
        for(int i=0;i<ratings.length;i++){
            sum+=candies[i];
        }
        return sum;
    }
}

 

分享到:
评论

相关推荐

    java-leetcode题解之Candy.java

    在LeetCode网站上,有许多编程题目供程序员练习和提升技能。其中,“Candy”是其中一个较为经典的算法题目。此题要求解决如何根据孩子的评分以最少量的糖果分配给孩子们的问题。具体规则是孩子们根据评分排成一排,...

    js-leetcode题解之135-candy.js

    在JavaScript中解决LeetCode第135题《Candy》的方法涉及到利用贪心算法解决分配问题。LeetCode是一个在线编程问题平台,135题《Candy》是一个关于评分与分配的算法问题,要求给孩子们分配糖果,使得每个孩子至少得到...

    python-leetcode题解之135-Candy

    135号问题“Candy”是LeetCode网站上一个著名的算法问题,它主要考察算法设计和优化的技巧。问题的本质是分配糖果的问题,要求以最小的代价满足一系列不平等关系。 #### 问题描述 给定一组孩子和每个孩子对应的一个...

    erlang入门级练习:LeetCode OJ问题的部分erlang 源码

    我自己在新学erlang,在LeetCode OJ上找了题目练习,题目很适合新手熟悉语言,但是LeetCode OJ里面只有几门主流语言的答案,下面是已完成的erlang源代码,后续有空再做其他问题续传,题目包含:(源码开头都有题目...

    Leetcode题目+解析+思路+答案.pdf

    - **Candy**:分糖果,确保每个孩子至少得到一块糖,尽可能公平。 - **Word Break**:判断一个字符串是否可以拆分为一个词汇表中的单词序列。 7. **链表(Linked List)**: - **Linked List Cycle**:检测链表...

    Candy_leetcode:刷leetcode的代码汇总

    《Candy_leetcode:刷leetcode的代码汇总》 在编程领域,LeetCode是一个深受程序员喜爱的在线平台,它提供了大量的编程题目,旨在帮助用户提升算法技能、深化对数据结构的理解以及提高解决实际问题的能力。本资源...

    hackhu2019#LeetCode#LeetCode.135分发糖果1

    LeetCode.135分发糖果135. 分发糖果解题思路:3、最后发放糖果时必须同时满足左规则、右规则,所以取左右规则最大值public int candy

    leetcode中国-leetcode-chinese-crawler:leetcode-中文爬虫

    leetcode中国 leetcode-chinese-crawler 此代码用于USTC 2019秋季学期web课程开放实验 概述 爬取 LeetCode中文试题。 运行环境 Windows 10 python 3; 库: requests requests_toolbelt codecs json time random json...

    leetcode c++程序

    11. LeetCode题目案例:文档中提到了一些特定的LeetCode题目案例,如SetMatrixZeroes、GasStation、Candy、SingleNumber等。这些案例覆盖了数组、单链表、字符串等数据结构的多种操作,体现了各种算法应用场景。 12...

    leetcode-cpp刷题

    - **2.1.22 Candy** - 分发糖果问题,确保相邻的孩子获得的糖果数量不同。 - 实现思路:动态规划,先从左到右分配,再从右到左分配。 - **2.1.23 Single Number** - 找出数组中只出现一次的数字。 - 实现思路...

    leetcode和oj-LeetCode:力码

    leetcode 和 oj #问题列表(按标题升序) 标题|添加日期|AC 利率 ---|---|---|--- 3Sum |2012-01-17|16.4% 3Sum Closest|2012-01-18|26.8% 4Sum|2012-01-26 |21.3% 二进制加法|2012-04-02|25.6% 两个数相加|2011-11-...

    leetcode分发糖果-LeetCodeAlgorithm:学习算法,LeetCode刷题,建议经典书籍《算法导论》《算法4》,使用C++和

    candy: minimum_depth_binary_tree: twoSum: regularExpressionMathcing: sameTree: find_content_children: LeetCode 算法题 时间复杂度和空间复杂度权衡,时间复杂度的提升是以空间复杂度为代价的 仔细观察,...

    leetcode最大蓄水量-algorithm-go:记录golang数据结构及leetCode刷题算法

    leetcode最大蓄水量 记录数据结构和leetCode算法题 数据结构 sparsearray 稀疏数组 singlequeue 数组模拟队列 circelqueue 数组模拟环形队列 singlequeue 单向链表 doublelink 双向链表 circlesinglelink 环形链表 ...

    这是一个学习《小灰算法》《算法4》的仓库,里面有对《小灰算法》和《算法4》

    此外,提到了一个名为"Candy-leetcode"的代码库,这是一个与算法学习相关的项目,它可能是用于实践算法理论、解答leetcode平台上的算法题目的代码集合。 结合"Candy-leetcode"这一名称,我们可以推测这个代码库可能...

    LeetCode练习答案

    - **分发糖果(Candy)**: 给定评分,每个孩子至少分配1颗糖果,相邻的孩子如果评分不同,则评分较高的孩子必须获得更多的糖果。 ##### 链表(LinkedList) - **合并两个有序链表(Merge Sorted Lists)**: 合并两个已...

    gasstationleetcode-leetcode-in-niuke:在牛客网上的在线编程中的leetcode在线编程题解

    candy 贪心 gas-station 动态规划 palindrome-partitioning-ii 动态规划 triangle 树 sum-root-to-leaf-numbers 动态规划 distinct-subsequences 递归 valid-palindrome 模拟 pascals-triangle 模拟 pasca

    leetcode_easy_python

    leetcode_easy_python 挑战1431:给定数组糖果和整数extraCandies,其中candy [i]代表第i个孩子拥有的糖果数量。 对于每个孩子,检查是否有一种方法可以在孩子之间分配额外的糖果,以便他或她可以在其中拥有最多的...

    gasstationleetcode-LeetCode:力码

    leetcode 力码 【吾生也有涯,而知也无涯。】 刷题解题记录: 大批: 220 包含重复 III 考 55 跳跃游戏45 跳跃游戏 II121 买卖股票的最佳时机 122 买卖股票的最佳时机 II123 买卖股票的最佳时机 III188 买卖股票的...

    leetcode打不开-toy-problems:编码练习

    leetcode打不开玩具问题 编码练习 string input; while (getline(cin, input)) { cout &lt;&lt; "input: " &lt;&lt; input &lt;&lt; endl; string output = candyCrush(input); cout &lt;&lt; "output: " &lt;&lt; ...

    谷歌师兄的leetcode刷题笔记-Sweet-Bank:SweetBank是Kotlin中的一个Android应用程序,我开发它来尝试移动开

    谷歌师兄的leetcode刷题笔记 甜蜜银行 :candy: Sweet Bank 是Kotlin中的一个 Android 应用程序,我开发它是为了尝试移动开发的一些原则,例如范围分离、设计模式(例如 MVVM)等等。 我使用 Starling Bank API 来...

Global site tag (gtag.js) - Google Analytics