题目描述:
class Solution {
public List<Integer> filterRestaurants(int[][] restaurants, int veganFriendly, int maxPrice, int maxDistance) {
List<Integer> list = new ArrayList<>();
Map<Integer, Integer> map = new HashMap<>(); // key: 餐馆ID, value: 评分
for (int[] restaurant : restaurants) {
int id = restaurant[0];
int rating = restaurant[1];
int isVegan = restaurant[2];
int price = restaurant[3];
int distance = restaurant[4];
// 修正条件判断
boolean condition;
if (veganFriendly == 1) {
condition = (isVegan == 1) && (price <= maxPrice) && (distance <= maxDistance);
} else {
condition = (price <= maxPrice) && (distance <= maxDistance);
}
if (condition) {
map.put(id, rating); // 用餐馆ID作为key
}
}
// 转换为List并排序
List<Map.Entry<Integer, Integer>> sorted = new ArrayList<>(map.entrySet());
Collections.sort(sorted, (a, b) -> {
int cmp = Integer.compare(b.getValue(), a.getValue());
return (cmp != 0) ? cmp : Integer.compare(b.getKey(), a.getKey());
});
/*
Collections.sort(sorted, (a, b) -> {
// 比较两个条目的值
if (b.getValue().equals(a.getValue())) {
// 值相同:按键降序(返回b的键 - a的键)
return b.getKey() - a.getKey();
} else {
// 值不同:按值降序(返回b的值 - a的值)
return b.getValue() - a.getValue();
}
});*/
// 填充结果
for (Map.Entry<Integer, Integer> entry : sorted) {
list.add(entry.getKey());
}
return list;
}
}