給你乙個餐館資訊陣列restaurants
,其中restaurants[i] = [idi, ratingi, veganfriendlyi, pricei, distancei]
。你必須使用以下三個過濾器來過濾這些餐館資訊。
其中素食者友好過濾器veganfriendly
的值可以為true
或者false
,如果為 true 就意味著你應該只包括veganfriendlyi
為 true 的餐館,為 false 則意味著可以包括任何餐館。此外,我們還有最大**maxprice
和最大距離maxdistance
兩個過濾器,它們分別考慮餐廳的**因素和距離因素的最大值。
過濾後返回餐館的id,按照rating從高到低排序。如果rating相同,那麼按id從高到低排序。簡單起見,示例 1:veganfriendlyi
和veganfriendly
為 true 時取值為 1,為 false 時,取值為0。
輸入: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(按評分從高到低排序)。
示例 2:
輸入: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 = 0, maxprice = 50, maxdistance = 10
輸出:[4,3,2,1,5]
解釋:餐館與示例 1 相同,但在 veganfriendly = 0 的過濾條件下,應該考慮所有餐館。
示例 3:
輸入: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 = 0, maxprice = 30, maxdistance = 3
輸出:[4,5]
題目並不算難,我們要做的就是遍歷並找出滿足這些條件的餐廳
我們遍歷restaurants
這個二維陣列並且每個遍歷到的一維陣列設為restaurant
(veganfriendly ==0||
(veganfriendly + restaurant[2]
==2))
&& restaurant[3]
<= maxprice
&& restaurant[4]
<= maxdistance
餐廳的最大**要小於引數給出的最大**。
我們把滿足如上條件的一維陣列都存起來,我用的是arraylist
來存的,所以上一步是比較簡單的;困難的地方主要是排序。這裡我們呼叫arraylist
的sort
方法,這個方法需要我們傳入乙個comparator
匿名類。首先我們根據rating
(即restaurant[1])來排序,如果rating
相同,那麼我們就使用id
(即restaurant[0])來排序。那麼我們的comparator
可以寫成
new
comparator
<
int[
]>()
else
}}
使用lamda表示式的話就是
(o1, o2)
->
else
}
public list
filterrestaurants
(int
restaurants,
int veganfriendly,
int maxprice,
int maxdistance)
}//排序
reslist.
sort
((o1, o2)
->
else})
; list
res =
newarraylist
<
>()
;//遍歷獲得id
for(
int[
] i :
reslist)
return res;
}
(8月20日成績)
程序和執行緒小解析
程序是作業系統進行資源分配的單位。執行緒是cpu任務排程的基本單元。至於程式和程序的區別?程式是死的 用我老師的話來說就是相當於程序的屍體,不可被執行或排程,以檔案形式存在於系統中。而程序則是活的程式,是可以被系統執行和排程的。程序的五大狀態 建立 建立程序 就緒 建立完畢,等待cpu排程 執行 正...
vc助手整合問題小解析
最近,又是想搞驅動,又是64位os移植,一頭包。發現了visaul assist 與 ds之間的衝突問題,現和大家一起分享,如有不對請斧正。我安裝的visual assist 是1626以後版本的,聽說只有這些版本支援vs2005 vs2008,安裝一路順風 如果你沒有安裝ds,如果安裝了ds,估計...
leetCode題目解析
給出兩個非空的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照逆序的方式儲存的,並且它們的每個節點只能儲存一位數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8原...