【Leetcode -598.范围求和Ⅱ -599.两个列表的最小索引总和】

简介: 【Leetcode -598.范围求和Ⅱ -599.两个列表的最小索引总和】

Leetcode -598.范围求和Ⅱ

题目:给你一个 m x n 的矩阵 M ,初始化时所有的 0 和一个操作数组 op ,其中 ops[i] = [ai, bi] 意味着当所有的 0 <= x < ai 和 0 <= y < bi 时, M[x][y] 应该加 1。

在 执行完所有操作后 ,计算并返回 矩阵中最大整数的个数 。

示例 1:

输入: m = 3, n = 3,ops = [[2, 2], [3, 3]]

输出 : 4

解释 : M 中最大的整数是 2, 而且 M 中有4个值为2的元素。因此返回 4。

示例 2 :

输入 : m = 3, n = 3, ops = [[2, 2], [3, 3], [3, 3], [3, 3], [2, 2], [3, 3], [3, 3], [3, 3], [2, 2], [3, 3], [3, 3], [3, 3]]

输出 : 4

示例 3 :

输入 : m = 3, n = 3, ops = []

输出 : 9

思路是每次只需要判断最小的行和列,因为只是返回它们的个数,所以只需要行和列就够了;

int maxCount(int m, int n, int** ops, int opsSize, int* opsColSize)
    {
        int minrow = m, mincol = n;
        for (int i = 0; i < opsSize; i++)
        {
            //判断最小行和最小列
            //因为只是返回它们的个数,所以只需要行和列就够了
            minrow = fmin(ops[i][0], minrow);
            mincol = fmin(ops[i][1], mincol);
        }
        return minrow * mincol;
    }

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

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

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

示例 1:

输入: list1 = [“Shogun”, “Tapioca Express”, “Burger King”, “KFC”],list2 = [“Piatti”, “The Grill at Torrey Pines”, “Hungry Hunter Steakhouse”, “Shogun”]

输出 : [“Shogun”]

解释 : 他们唯一共同喜爱的餐厅是“Shogun”。

示例 2 :

输入 : list1 = [“Shogun”, “Tapioca Express”, “Burger King”, “KFC”],list2 = [“KFC”, “Shogun”, “Burger King”]

输出 : [“Shogun”]

解释 : 他们共同喜爱且具有最小索引和的餐厅是“Shogun”,它有最小的索引和1(0 + 1)。

提示 :

1 <= list1.length, list2.length <= 1000

1 <= list1[i].length, list2[i].length <= 30

list1[i] 和 list2[i] 由空格 ’ ’ 和英文字母组成。

list1 的所有字符串都是 唯一 的。

list2 中的所有字符串都是 唯一 的。

思路是在一个数组中的餐厅寻找另外一个数组中相同的餐厅,并用 i 和 j 作为它们的索引,判断它们的索引是否是最小,因为在此次 i 的遍历中,j 只会越来越大,所以第一次出现相同的餐厅的时候,它们的索引就是最小的;但是可能还会有相同的最小的索引的情况,所以下一次判断索引的时候,等于最小索引的时候,也要放入返回数组中;

char** findRestaurant(char** list1, int list1Size, char** list2, int list2Size, int* returnSize)
    {
        //开辟返回的数组指针,开辟1000个是因为两个数组的长度最长是1000
        char** ret = (char**)malloc(sizeof(char*) * 1000);
        //提前开辟好二级指针中的一级指针的空间大小,因为1 <= list1[i].length, list2[i].length <= 30,加上'\0'就是31个
        for (int i = 0; i < fmax(list1Size, list2Size); i++)
        {
            ret[i] = (char*)malloc(sizeof(char) * 31);
        }
        int len, sum, min = INT_MAX;
        for (int i = 0; i < list1Size; i++)
        {
            for (int j = 0; j < list2Size; j++)
            {
                //相同餐厅
                if (strcmp(list1[i], list2[j]) == 0)
                {
                    //判断最小索引
                    sum = i + j;
                    if (sum < min)
                    {
                        len = 0;
                        min = sum;
                        strcpy(ret[len++], list1[i]);
                    }
                    //下一个相同的餐厅它们俩的索引和也是等于最小索引
                    else if (sum == min)
                    {
                        strcpy(ret[len++], list1[i]);
                    }
                    break;
                }
                //如果索引和大于最小索引和,提前跳出循环
                if (i + j > min)
                    break;
            }
        }
        *returnSize = len;
        return ret;
    }
目录
相关文章
|
7月前
|
索引
【力扣刷题】两数求和、移动零、相交链表、反转链表
【力扣刷题】两数求和、移动零、相交链表、反转链表
53 2
【力扣刷题】两数求和、移动零、相交链表、反转链表
【LeetCode-每日一题】-67. 二进制求和
【LeetCode-每日一题】-67. 二进制求和
|
4月前
|
算法 Java 索引
LeetCode初级算法题:寻找数组的中心索引+x的平方根+三个数的最大乘积+Leetcode 149:直线上最多的点数 Java详解
LeetCode初级算法题:寻找数组的中心索引+x的平方根+三个数的最大乘积+Leetcode 149:直线上最多的点数 Java详解
39 0
|
4月前
|
算法 索引 Python
【Leetcode刷题Python】852. 山脉数组的峰顶索引
本文使用二分查找算法解决LeetCode "山脉数组的峰顶索引" 问题的Python实现,通过递归地缩小搜索区间来查找山脉数组的峰值索引。
31 0
|
6月前
|
索引
【LeetCode刷题】二分查找:山脉数组的峰顶索引、寻找峰值
【LeetCode刷题】二分查找:山脉数组的峰顶索引、寻找峰值
|
6月前
|
存储 SQL 算法
LeetCode题目67:二进制求和
LeetCode题目67:二进制求和
|
6月前
|
算法 数据挖掘 开发者
LeetCode题目55:跳跃游戏【python5种算法贪心/回溯/动态规划/优化贪心/索引哈希映射 详解】
LeetCode题目55:跳跃游戏【python5种算法贪心/回溯/动态规划/优化贪心/索引哈希映射 详解】
|
6月前
|
算法 Java Go
【经典算法】LeetCode 67. 二进制求和(Java/C/Python3/Golang实现含注释说明,Easy)
【经典算法】LeetCode 67. 二进制求和(Java/C/Python3/Golang实现含注释说明,Easy)
88 2
|
7月前
|
索引
Leetcode 给定一个数组,给定一个数字。返回数组中可以相加得到指定数字的两个索引
Leetcode 给定一个数组,给定一个数字。返回数组中可以相加得到指定数字的两个索引
|
7月前
|
开发者 索引 Python
【python刷题】LeetCode 2057E 值相等的最小索引(5种简单高效的解法)
【python刷题】LeetCode 2057E 值相等的最小索引(5种简单高效的解法)
50 0