1. 程式人生 > >Leetcode PHP題解--D117 599. Minimum Index Sum of Two Lists

Leetcode PHP題解--D117 599. Minimum Index Sum of Two Lists

D117 599. Minimum Index Sum of Two Lists

題目連結

599. Minimum Index Sum of Two Lists

題目分析

給定兩個陣列,返回其交集,在交集中返回他們在各自陣列的下標之和最小。

思路

因為去找一個元素在不在另一個數組的話,需要逐個比較。因此我們在這裡先把兩個陣列都翻過來,用isset函式去判斷是否存在元素。

在迴圈體外儲存最小和,判斷兩個相同的元素的下標之和是否小於最小值。是則替換,並置空交集陣列。否則判斷是否相等於當前最小值。相等則追加進交集陣列。不相等說明大於最小值,拋棄即可。

最終程式碼

<?php
class Solution {

    /**
     * @param String[] $list1
     * @param String[] $list2
     * @return String[]
     */
    function findRestaurant($list1, $list2) {
        $list1 = array_flip($list1);
        $list2 = array_flip($list2);
        $min = 99999999999;
        $intersect = [];
        foreach($list1 as $name => $v){
            if(!isset($list2[$name])){
                continue;
            }
            if($v+$list2[$name] < $min){
                $min = $v + $list2[$name];
                $intersect = [$name];
            }
            else if($v+$list2[$name] == $min){
                $intersect[] = $name;
            }
        }
        return $intersect;
    }
}

若覺得本文章對你有用,歡迎用