【LeetCode】135.Candy(hard)解题报告
2017-11-06 19:13
513 查看
【LeetCode】135.Candy(hard)解题报告
tags: greedy
题目地址:https://leetcode.com/problems/candy/description/
题目描述:
There are N children standing in a line. Each child is assigned a rating value.
You are giving candies to these children subjected to the following requirements:
1. Each child must have at least one candy.
2. Children with a higher rating get more candies than their neighbors.
What is the minimum candies you must give?
题意:分糖,看怎么分需要的糖最少,满足每个人至少一个糖,数大的人比左右两边糖多,遍历两次,正序一次,倒序一次,倒序时要注意就是如果左面值比右面加一的大,就要取原有值,即用到max函数,比较取最大的。
Solutions:
Date:2017年11月6日
tags: greedy
题目地址:https://leetcode.com/problems/candy/description/
题目描述:
There are N children standing in a line. Each child is assigned a rating value.
You are giving candies to these children subjected to the following requirements:
1. Each child must have at least one candy.
2. Children with a higher rating get more candies than their neighbors.
What is the minimum candies you must give?
题意:分糖,看怎么分需要的糖最少,满足每个人至少一个糖,数大的人比左右两边糖多,遍历两次,正序一次,倒序一次,倒序时要注意就是如果左面值比右面加一的大,就要取原有值,即用到max函数,比较取最大的。
Solutions:
思路: 1 2 3 4 2 1 1 1 1 1 1 1 1 1 f: 1 2 3 4 1 1 1 b: 1 2 3 4 2 1 1 condy[i] = Math.max(candy[i] , candy[i+1]=1) 代码如下: class Solution { public int candy(int[] ratings) { if(ratings.length==0){ return 0; } int[] candy = new int[ratings.length]; Arrays.fill(candy,1); for(int i=1 ; i<ratings.length ; i++){ if(ratings[i] > ratings[i-1]){ candy[i] = candy[i-1] + 1; } } for(int i=ratings.length-2 ; i>=0 ; i--){ if(ratings[i] > ratings[i+1]){ candy[i] = Math.max(candy[i] , candy[i+1]+1); } } int sum=0; for(int i=0 ; i<candy.length ;i++){ sum += candy[i]; } return sum; } }
Date:2017年11月6日
相关文章推荐
- 【LeetCode】42.Trapping Rain Water(Hard)解题报告
- 【LeetCode】291.Word Pattern II(Hard)解题报告
- 【LeetCode】4.Median of Two Sorted Arrays(Hard)解题报告
- 【LeetCode】726.Number of Atoms(Hard)解题报告
- 【LeetCode】10.Regular Expression Matching(hard)解题报告
- 【LeetCode】52.N-Queens II(hard)解题报告
- 【LeetCode】41. First Missing Positive(Hard)解题报告
- 【LeetCode】282.Expression Add Operators(Hard)解题报告
- 【LeetCode】45.Jump Game II(Hard)解题报告
- 【LeetCode】99.Recover Binary Search Tree(Hard)解题报告
- 【LeetCode】321.Create Maximum Number(Hard)解题报告
- 【LeetCode】403. Frog Jump(Hard)解题报告
- 【LeetCode】164.Maximum Gap(Hard)解题报告
- 【LeetCode】327. Count of Range Sum(Hard)解题报告
- 【LeetCode】145.Binary Tree Postorder Traversal(Hard)解题报告
- 【LeetCode】297.Serialize and Deserialize Binary Tree(Hard)解题报告
- 【LeetCode】123.Best Time to Buy and Sell Stock III(Hard)解题报告
- 【LeetCode】51.N-Queens(hard)解题报告
- 【LeetCode】330.Patching Array(Hard)解题报告
- 【LeetCode】301.Remove Invalid Parentheses(hard)解题报告