当前位置: 首页 > article >正文

寒假刷题Day22

一、2570. 合并两个二维数组 - 求和法

class Solution {
public:
    vector<vector<int>> mergeArrays(vector<vector<int>>& nums1, vector<vector<int>>& nums2) {
        int i = 0, j = 0, n1 = nums1.size(), n2 = nums2.size();
        int tmp = 0;
        vector<vector <int>> ans;
        while(i < n1 && j < n2){
            int id1 = nums1[i][0], id2 = nums2[j][0];
            if(id1 == id2){
               ans.push_back({id1, nums1[i][1] + nums2[j][1]});
                i++;
                j++;
            } else if (id1 < id2) {
                ans.push_back(nums1[i]);
                i++;
            } else { // id1 > id2
                ans.push_back(nums2[j]);
                j++;
            }
        }
             // 处理剩余部分
        while (i < n1) {
            ans.push_back(nums1[i]);
            i++;
        }
        while (j < n2) {
            ans.push_back(nums2[j]);
            j++;
        }
        return ans;  
    }
};

总体思路是先处理两条数组一样长的地方,再单独处理较长的那一条剩下的

二、LCP 18. 早餐组合

不出所料,暴力会超时。。。(谁家早餐店几千种卖早餐!!!带87979元吃早餐哈哈哈)

class Solution {
public:
    int breakfastNumber(vector<int>& staple, vector<int>& drinks, int x) {
        const int mod = 1e9 + 7;
        int ans = 0;
        sort(staple.begin(), staple.end());
        sort(drinks.begin(), drinks.end());
        int j = drinks.size() - 1;
        for (int i = 0; i < staple.size(); i++) {
            while (j >= 0 && staple[i] + drinks[j] > x) j--;
            if (j == -1) break;
            ans += j + 1;
            ans %= mod;
        }
        return ans;
    }
};

找 staple[i] + drinks[j] <= x 的位置

ans += j+1 是因为 j 是下标,0 到 j 满足条件

三、1855. 下标对中的最大距离

class Solution {
public:
    int maxDistance(vector<int>& nums1, vector<int>& nums2) {
        int i = 0, j = 0, n1 = nums1.size(), n2 = nums2.size();
        int ans = 0;
        while(i < n1 && j < n2){
            if(j < i){
                j = i;
            }
            if(nums1[i] <= nums2[j]){
                ans = max(ans, (j - i));
                j++;
            }else{
                i++;
            }
        }
        return ans;
    }
};

有点摸到双指针套路了,也是维护加计算


http://www.kler.cn/a/533867.html

相关文章:

  • CTP查询资金费率和手续费没响应
  • 逻辑回归原理
  • hot100(7)
  • 深度学习中,文本分类任务怎么做
  • 04树 + 堆 + 优先队列 + 图(D1_树(D10_决策树))
  • React中为每个列表项显示多个DOM节点的解决方案
  • 【搜索文章】:搜索(es)+ 搜索记录(mongodb)+ 搜索联想词
  • 如何在PPT中将文字环绕于图片周围
  • python零基础入门学习之“输入”
  • Maven架构项目管理工具
  • Mysql——SQL语句
  • KES数据库实践指南:探索KES数据库的事务隔离级别
  • linux 进程状态学习
  • SQL Server配置管理器无法连接到 WMI 提供程序
  • 设计模式---观察者模式
  • 用Argo的netCDF文件计算海洋混合层和障碍层深度并通过M_Map工具包画出全球海洋MLD和BL的分布图
  • Zabbix SQL注入漏洞CVE-2024-42327修复建议
  • Hackmyvm friendly2
  • 使用java调用deepseek,调用大模型,处理问题。ollama
  • Unity3D RVO动态避障技术方案详解
  • 春节娱乐大餐,智能家居互联互通,极空间虚拟机安装小米官方 HA 集成组件
  • excel里面的数据怎样批量地处理,把数据竖排便成横排?
  • 第五天 初步了解ArkTS和ArkUI
  • 拍照对比,X70 PRO与X90 PRO+的细节差异
  • Linux 零拷贝技术
  • C#结合html2canvas生成切割图片并导出到PDF