leetcode的每日一题更新(Minimum Index Sum of Two Lists)

题目:两个人,每个人有喜欢的餐厅字符串数组,找出他们共同爱好的餐厅并且要求index之和最小。返回一个字符串数组,因为可能有多个结果。
Input:
["Shogun", "Tapioca Express", "Burger King", "KFC"]
["Piatti", "The Grill at Torrey Pines", "Hungry Hunter Steakhouse", "Shogun"]
Output: ["Shogun"]
Explanation: The only restaurant they both like is "Shogun".
解题思路:我只能用穷举法,因为做到一半看到它的排序顺序是根据第二个人的,所以将第二个数组作为外围,加入到要返回的数组中,后面遇到一个问题,因为是new的两个中最长的数组,所以出来的结果有null值,只能根据一个控制result数组的index来创建一个新的数组,将这个新数组返回,我这个解法太麻烦了,而且复杂度n2。附上代码:

public String[] findRestaurant(String[] list1, String[] list2) {
        if(list1==null || list2==null || list1.length==0 || list2.length==0 )return null;
        String[] result=null;
        int listindex=0;
        int min=2001;
        int resultindex=0;
        for(int i=0;i i+j){
                        listindex=i;
                        min=i+j;
                        result=new String[list1.length>list2.length?list1.length:list2.length];
                        resultindex=0;
                        result[resultindex++]=list1[j];
                    }else if(min == i+j){
                        result[resultindex++]=list1[j];
                    }
                }
            }
        }
        if(min==2001)return null;
        String[] realresult=new String[resultindex];
        for(int k=0;k

看了以下其他人的解法,他们是用hashmap来减少一重循环,直接键值匹配,我不会算精确的复杂度,不过用类库的方法肯定比我的n2的复杂度好一些,代码就不复制了。看看就行。

你可能感兴趣的:(leetcode的每日一题更新(Minimum Index Sum of Two Lists))