LeetCode - 599. 최소 인덱스 2 개 목록 의 합계 (JAVA) 최소 색인

2467 단어 leetcode
599. Minimum Index Sum of Two Lists
Suppose Andy and Doris want to choose a restaurant for dinner, and they both have a list of favorite restaurants represented by strings.
You need to help them find out their common interest with the least list index sum. If there is a choice tie between answers, output all of them with no order requirement. You could assume there always exists an answer.
Example 1:

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".

Example 2:

Input:
["Shogun", "Tapioca Express", "Burger King", "KFC"]
["KFC", "Shogun", "Burger King"]
Output: ["Shogun"]
Explanation: The restaurant they both like and have the least index sum is "Shogun" with index sum 1 (0+1).

Note:
  • The length of both lists will be in the range of [1, 1000].
  • The length of strings in both lists will be in the range of [1, 30].
  • The index is starting from 0 to the list length minus 1.
  • No duplicates in both lists.

  • 두 배열 은 요소 가 같 고 아래 에 표 시 된 최소 요 소 를 찾 습 니 다. 여러 개 있 으 면 여러 개 로 돌아 갑 니 다. 두 배열 은 각각 중복 요소 가 없습니다.
    두 개의 맵 저장 요 소 를 사용 한 후 최소 값 을 구하 십시오.
    public String[] findRestaurant(String[] list1, String[] list2) {
    	List minRes = null;
    	Map map1 = new HashMap<>();
    	Map map2 = new HashMap<>();
    	int min = Integer.MAX_VALUE;
    
    	for (int i = 0; i < list1.length; i++) {
    		map1.put(list1[i], i);
    	}
    	for (int i = 0; i < list2.length; i++) {
    		map2.put(list2[i], i);
    	}
    
    	for (int i = 0; i < list1.length; i++) {
    		//   map2  map1 key
    		if (map2.containsKey(list1[i])) {
    			int sum = map1.get(list1[i]) + map2.get(list1[i]);
    			if (sum < min) {
    				min = sum;
    				// minRes       sum,      min  sum,      minRes
    				//   new             for  ,              
    				minRes = new ArrayList();
    				minRes.add(list1[i]);
    			} else if (sum == min) {
    				minRes.add(list1[i]);
    			}
    		}
    	}
    
    	String[] strRes = new String[minRes.size()];
    	for (int i = 0; i < minRes.size(); i++) {
    		strRes[i] = minRes.get(i);
    	}
    
    	return strRes;
    }

    좋은 웹페이지 즐겨찾기