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

寒假刷题Day24

一、986. 区间列表的交集

class Solution {
public:
    vector<vector<int>> intervalIntersection(vector<vector<int>>& firstList, vector<vector<int>>& secondList) {
        vector<vector<int>> res;
        int i = 0, j = 0, n1 = firstList.size(), n2 = secondList.size();
        if(n1 == 0 || n2 == 0) return res;
        while(i < n1 && j < n2){
            int l = max(firstList[i][0], secondList[j][0]), r = min(firstList[i][1], secondList[j][1]); //有交集
            if(l <= r){
                res.push_back({l, r});
            }
            if(firstList[i][1] > secondList[j][1]){
                ++j;
            }
            else{
                ++i;
            }
        }
        return res;
    }
};

关键在于两点:

  1. 满足r1 >= l2 && r2 >= l1则两集合相交。
  2. 两集合交集为[max(l1, l2), min(r1, r2)]。

二、面试题 16.06. 最小差

class Solution {
public:
    int smallestDifference(vector<int>& a, vector<int>& b) {
        int i = 0, j = 0, n1 = a.size(), n2 = b.size();
        sort(a.begin(), a.end()); 
        sort(b.begin(), b.end());
        long ans = LONG_MAX;  // 用 long 来避免溢出

        while (i < n1 && j < n2) {
            long diff = (long)a[i] - (long)b[j]; // 用 long 计算避免溢出
            ans = min(ans, abs(diff));

            if (diff < 0) {
                i++;
            } else {
                j++;
            }
        }
        return (int)ans;
    }
};

我要吐槽这个神人测试用例:

a =

[-2147483648,1]

b =

[2147483647,0]
 

a[i] - b[j] 可能会超出 int 类型的范围,特别是当 a[i] = -2147483648b[j] = 2147483647 时:

a[ i ] − b[ j ] = −2147483648 − 2147483647 = −4294967295

这个值超出了 int(32 位有符号整数)的范围([-2^{31}, 2^{31}-1]),导致溢出。

http://www.dtcms.com/a/19817.html

相关文章:

  • Word正文中每两个字符之间插入一个英文半角空格
  • 服务器虚拟化(详解)
  • 枚举Enum用法
  • ros:ur机械臂初识
  • 基于STM32的智能垃圾分类回收系统
  • 【kafka系列】At Most Once语义
  • matlab-simulink
  • 鲸鱼算法优化Transformer+KAN网络并应用于时序预测任务
  • TrueNAS in Hyper-V
  • React:初识React
  • 脉冲当量含义
  • 国内已经部署DeepSeek的第三方推荐
  • Java 基于 SpringBoot+Vue 的家政服务管理平台设计与实现
  • TypeScript type 和 interface 的区别
  • 计算机视觉-尺度不变区域
  • mysql的rpm包安装
  • PyQt6/PySide6 的 SQL 数据库操作(QtSql)
  • SpringBoot:解决前后端请求跨域问题(详细教程)
  • pytourch训练识别单个数字的图片
  • 【STM32】DRV8833驱动电机
  • APlayer - APlayer 初识(APlayer 初识案例、APlayer 常用事件)
  • C++中常用的十大排序方法之4——希尔排序
  • 代码随想录算法训练营第三十九天| 动态规划03
  • 19.Python实战:实现对博客文章的点赞系统
  • 微信小程序中缓存数据全方位解惑
  • Unity 编辑器热更C# FastScriptReload
  • 安卓基础(Adapter)
  • JVM 底层探秘:对象创建的详细流程、内存分配机制解析以及线程安全保障策略
  • React生产环境下使用mock.js
  • VueRouter 实例