599. 两个列表的最小索引总和

题目

假设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 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!