599. 兩個列表的最小索引總和

zyfsuzy發表於2020-02-13

題目

假設Andy和Doris想在晚餐時選擇一家餐廳,並且他們都有一個表示最喜愛餐廳的列表,每個餐廳的名字用字串表示。

你需要幫助他們用最少的索引和找出他們共同喜愛的餐廳。 如果答案不止一個,則輸出所有答案並且不考慮順序。 你可以假設總是存在一個答案。

示例1

輸入:
[“Shogun”, “Tapioca Express”, “Burger King”, “KFC”]
[“Piatti”, “The Grill at Torrey Pines”, “Hungry Hunter Steakhouse”, “Shogun”]
輸出: [“Shogun”]
解釋: 他們唯一共同喜愛的餐廳是“Shogun”。

解題思路

  1. 遍歷其中一個陣列
  2. 並檢查該陣列元素在另一個陣列是否在
  3. 存在對儲存索引和
  4. 比較索引大小

程式碼

class Solution {
    public String[] findRestaurant(String[] list1, String[] list2) {
        List<String> strSet2 = Arrays.asList(list1);
        List<String> result = new ArrayList<>();
        int indexSum = 0;
        for (int i=0; i< list2.length; i++){
            if(strSet2.contains(list2[i])){
                if(result.isEmpty()){
                    result.add(list2[i]);
                    indexSum = i+ strSet2.indexOf(list2[i]);
                }else if((strSet2.indexOf(list2[i])+i) == indexSum){
                    result.add(list2[i]);
                }else if((strSet2.indexOf(list2[i])+i) <  indexSum){
                    result.clear();
                    result.add(0, list2[i]);
                    indexSum = strSet2.indexOf(list2[i])+1;
                }

            }
        }
        return result.toArray(new String[0]);
    }
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章