Problem: https://leetcode.com/problems/candy/
Solution:
Brute force
- 创建数组存储糖果个数,初始值都为1
- 遍历数组,与前后值分别进行比较
- 多次遍历,直到所有值都满足条件
class Solution {
public int candy(int[] ratings) {
int len = ratings.length;
int[] arr = new int[len];
Arrays.fill(arr, 1);
boolean flag = true;
while(flag) {
flag = false;
// 注意此处,存在遍历一次无法将所有candy都满足条件的情况
// test case:[1, 2, 87, 87, 87, 2, 1]
for (int i = 0; i < len; i++) {
if (i > 0 && ratings[i] > ratings[i-1] && arr[i] <= arr[i-1]) {
arr[i] = arr[i-1] + 1;
flag = true;
}
if (i < len - 1 && ratings[i] > ratings[i+1] && arr[i] <= arr[i+1]) {
arr[i] = arr[i+1] + 1;
flag = true;
}
}
}
int sum = 0;
for(int a:arr) {
sum += a;
}
return sum;
}
}
tbc