給你一個餐館信息數組 restaurants,其中 restaurants[i] = [idi, ratingi, veganFriendlyi, pricei, distancei]。你必須使用以下三個過濾器來過濾這些餐館信息。
其中素食者友好過濾器 veganFriendly 的值可以為 true 或者 false,如果為 true 就意味著你應該只包括 veganFriendlyi 為 true 的餐館,為 false 則意味著可以包括任何餐館。此外,我們還有最大價格 maxPrice 和最大距離 maxDistance 兩個過濾器,它們分別考慮餐廳的價格因素和距離因素的最大值。
過濾后返回餐館的 id,按照 rating 從高到低排序。如果 rating 相同,那么按 id 從高到低排序。簡單起見, veganFriendlyi 和 veganFriendly 為 true 時取值為 1,為 false 時,取值為 0 。
示例 1:
輸入:restaurants = [[1,4,1,40,10],[2,8,0,50,5],[3,8,1,30,4],[4,10,0,10,3],[5,1,1,15,1]], veganFriendly = 1, maxPrice = 50, maxDistance = 10
輸出:[3,1,5]
解釋:
這些餐館為:
餐館 1 [id=1, rating=4, veganFriendly=1, price=40, distance=10]
餐館 2 [id=2, rating=8, veganFriendly=0, price=50, distance=5]
餐館 3 [id=3, rating=8, veganFriendly=1, price=30, distance=4]
餐館 4 [id=4, rating=10, veganFriendly=0, price=10, distance=3]
餐館 5 [id=5, rating=1, veganFriendly=1, price=15, distance=1]
在按照 veganFriendly = 1, maxPrice = 50 和 maxDistance = 10 進行過濾后,我們得到了餐館 3, 餐館 1 和 餐館 5(按評分從高到低排序)。
代碼
class Solution {public List<Integer> filterRestaurants(int[][] restaurants, int veganFriendly, int maxPrice, int maxDistance) {List<Integer> list=new ArrayList<>();Arrays.sort(restaurants,(o1, o2) -> o2[1]==o1[1]?o2[0]-o1[0]:o2[1]-o1[1]);//排序for(int[] c:restaurants)if(c[2]>=veganFriendly&&c[3]<=maxPrice&&c[4]<=maxDistance)//篩選list.add(c[0]);return list;}
}