每日一题哈
import java.util.ArrayList;
import java.util.List;
/**
* @author xnl
* @Description:
* @date: 2022/5/26 22:24
*/
public class Solution {
public static void main(String[] args) {
Solution solution = new Solution();
int[][] positions = {{2,1},{2,9},{1,8}};
System.out.println(solution.fallingSquares(positions));
}
/**
* 使用暴力查找
* @param positions
* @return
*/
public List<Integer> fallingSquares(int[][] positions) {
List<Integer> result = new ArrayList<>();
int n = positions.length;
for (int i = 0; i < n; i++){
// 左右边界,右边得减一,才能放到上面去
int left = positions[i][0], right = positions[i][0] + positions[i][1] - 1;
int height = positions[i][1];
for (int j =0; j < i; j++){
int left2 = positions[j][0], right2 = positions[j][0] + positions[j][1] - 1;
// 如果和上一个方块重叠
if (right >= left2 && right2 >= left){
height = Math.max(height, result.get(j) + positions[i][1]);
}
}
result.add(height);
}
for (int i = 1; i < n; i++) {
result.set(i, Math.max(result.get(i), result.get(i - 1)));
}
return result;
}
}