zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

每日一题 ---- 599. 两个列表的最小索引总和[力扣][Go]

2023-03-14 22:39:55 时间

题目:

假设 Andy 和 Doris 想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示。

你需要帮助他们用最少的索引和找出他们共同喜爱的餐厅。 如果答案不止一个,则输出所有答案并且不考虑顺序。 你可以假设答案总是存在。

解题代码:

func findRestaurant(list1 []string, list2 []string) []string {
    var ans []string
    // 最小的下标和
    n := len(list1) + len(list2) - 2
    for i, s := range list1 {
        for i2, s2 := range list2 {
            if s2 == s && n > i + i2{
                n = i + i2
            }
        }
    }
    if n == len(list1) + len(list2) - 2 && list1[len(list1) - 1] == list2[len(list2) - 1] {
        return append(ans,list1[len(list1) - 1])
    } else if n == len(list1) + len(list2) - 2 {
        return nil
    }
    // 遍历最小下标和为n的数
    for i, s := range list1 {
        if n - i < len(list2) && n - i >= 0{
            if s == list2[n - i] {
                ans = append(ans, s)
            }
        }
    }
    return ans
}

image