每日coding

2809. 使数组和小于等于 x 的最少时间

给你两个长度相等下标从 0 开始的整数数组 nums1 和 nums2 。每一秒,对于所有下标 0 <= i < nums1.length ,nums1[i] 的值都增加 nums2[i] 。操作 完成后 ,你可以进行如下操作:

  • 选择任一满足 0 <= i < nums1.length 的下标 i ,并使 nums1[i] = 0 。

同时给你一个整数 x 。

请你返回使 nums1 中所有元素之和 小于等于 x 所需要的 最少 时间,如果无法实现,那么返回 -1 。

示例 1:

输入:nums1 = [1,2,3], nums2 = [1,2,3], x = 4
输出:3
解释:
第 1 秒,我们对 i = 0 进行操作,得到 nums1 = [0,2+2,3+3] = [0,4,6] 。
第 2 秒,我们对 i = 1 进行操作,得到 nums1 = [0+1,0,6+3] = [1,0,9] 。
第 3 秒,我们对 i = 2 进行操作,得到 nums1 = [1+1,0+2,0] = [2,2,0] 。
现在 nums1 的和为 4 。不存在更少次数的操作,所以我们返回 3 。

示例 2:

输入:nums1 = [1,2,3], nums2 = [3,3,3], x = 4
输出:-1
解释:不管如何操作,nums1 的和总是会超过 x 。

看不懂OK

class Solution {
public:
    int minimumTime(vector<int> &nums1, vector<int> &nums2, int x) {
        int n = nums1.size();
        // 对下标数组排序,避免破坏 nums1 和 nums2 的对应关系
        vector<int> ids(n);
        iota(ids.begin(), ids.end(), 0);
        sort(ids.begin(), ids.end(), [&](const int i, const int j) {
            return nums2[i] < nums2[j];
        });

        vector<int> f(n + 1);
        for (int i = 0; i < n; i++) {
            int a = nums1[ids[i]], b = nums2[ids[i]];
            for (int j = i + 1; j; j--) {
                f[j] = max(f[j], f[j - 1] + a + b * j);
            }
        }

        int s1 = accumulate(nums1.begin(), nums1.end(), 0);
        int s2 = accumulate(nums2.begin(), nums2.end(), 0);
        for (int t = 0; t <= n; t++) {
            if (s1 + s2 * t - f[t] <= x) {
                return t;
            }
        }
        return -1;
    }
};

3000. 对角线最长的矩形的面积

给你一个下标从 0 开始的二维整数数组 dimensions

对于所有下标 i0 <= i < dimensions.length),dimensions[i][0] 表示矩形 i 的长度,而 dimensions[i][1] 表示矩形 i 的宽度。

返回对角线最 长 的矩形的 面积 。如果存在多个对角线长度相同的矩形,返回面积最 大 的矩形的面积。

示例 1:

输入:dimensions = [[9,3],[8,6]]
输出:48
解释:
下标 = 0,长度 = 9,宽度 = 3。对角线长度 = sqrt(9 * 9 + 3 * 3) = sqrt(90) ≈ 9.487。
下标 = 1,长度 = 8,宽度 = 6。对角线长度 = sqrt(8 * 8 + 6 * 6) = sqrt(100) = 10。
因此,下标为 1 的矩形对角线更长,所以返回面积 = 8 * 6 = 48。

示例 2:

输入:dimensions = [[3,4],[4,3]]
输出:12
解释:两个矩形的对角线长度相同,为 5,所以最大面积 = 12。

提示:

  • 1 <= dimensions.length <= 100
  • dimensions[i].length == 2
  • 1 <= dimensions[i][0], dimensions[i][1] <= 100

sqrt出来的是double,不能用int接收。

class Solution {
public:
    int areaOfMaxDiagonal(vector<vector<int>>& dimensions) {
        if(dimensions.empty()) return 0;
        int max_diagonal = 0, max_l = 0, l = 0;
        for(const auto& dim : dimensions){
            l = dim[0] * dim[0] + dim[1] * dim[1];
            if(l > max_l || (l == max_l && dim[0] * dim[1] > max_diagonal)){
                max_diagonal = dim[0] * dim[1];
                max_l = l;
            }
        }
        return max_diagonal;
    }
};

 

相关推荐

  1. 每日coding

    2024-01-20 07:06:06       35 阅读
  2. 每日coding

    2024-01-20 07:06:06       30 阅读
  3. 每日coding

    2024-01-20 07:06:06       34 阅读
  4. 每日coding

    2024-01-20 07:06:06       33 阅读
  5. vs <span style='color:red;'>code</span>

    vs code

    2024-01-20 07:06:06      19 阅读
  6. Visual Studio Code(VS Code)安装教程

    2024-01-20 07:06:06       12 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-20 07:06:06       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-20 07:06:06       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-20 07:06:06       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-20 07:06:06       18 阅读

热门阅读

  1. spark的jdbc接口,类似于hiveserver2

    2024-01-20 07:06:06       31 阅读
  2. JVM介绍

    JVM介绍

    2024-01-20 07:06:06      28 阅读
  3. 【LeetCode】哈希表精选5题

    2024-01-20 07:06:06       39 阅读
  4. 1.19 力扣中等图论

    2024-01-20 07:06:06       35 阅读
  5. JVM的即时编译(JIT)优化原理:加速程序的执行

    2024-01-20 07:06:06       28 阅读
  6. 网络 - 网速很慢一定是网不好引起的吗?

    2024-01-20 07:06:06       33 阅读
  7. UDP协议

    UDP协议

    2024-01-20 07:06:06      32 阅读
  8. MySQL Interview Speedrun

    2024-01-20 07:06:06       29 阅读