Java | Leetcode Java题解之第373题查找和最小的K对数字

news2024/12/24 9:09:09

题目:

题解:

class Solution {
    public List<List<Integer>> kSmallestPairs(int[] nums1, int[] nums2, int k) {
        int m = nums1.length;
        int n = nums2.length;

        /*二分查找第 k 小的数对和的大小*/
        int left = nums1[0] + nums2[0];
        int right = nums1[m - 1] + nums2[n - 1];
        int pairSum = right;
        while (left <= right) {
            int mid = left + ((right - left) >> 1);
            long cnt = 0;
            int start = 0;
            int end = n - 1;
            while (start < m && end >= 0) {
                if (nums1[start] + nums2[end] > mid) {
                    end--;
                } else {
                    cnt += end + 1;
                    start++;
                }
            }
            if (cnt < k) {
                left = mid + 1;
            } else {
                pairSum = mid;
                right = mid - 1;
            }
        }

        List<List<Integer>> ans = new ArrayList<>();
        int pos = n - 1;
        /*找到小于目标值 pairSum 的数对*/
        for (int i = 0; i < m; i++) {
            while (pos >= 0 && nums1[i] + nums2[pos] >= pairSum) {
                pos--;
            }
            for (int j = 0; j <= pos && k > 0; j++, k--) {
                List<Integer> list = new ArrayList<>();
                list.add(nums1[i]);
                list.add(nums2[j]);
                ans.add(list);
            }
        }

        /*找到等于目标值 pairSum 的数对*/
        pos = n - 1;
        for (int i = 0; i < m && k > 0; i++) {
            int start1 = i;
            while (i < m - 1 && nums1[i] == nums1[i + 1]) {
                i++;
            }
            while (pos >= 0 && nums1[i] + nums2[pos] > pairSum) {
                pos--;
            }
            int start2 = pos;
            while (pos > 0 && nums2[pos] == nums2[pos - 1]) {
                pos--;
            }
            if (nums1[i] + nums2[pos] != pairSum) {
                continue;
            }
            int count = (int) Math.min(k, (long) (i - start1 + 1) * (start2 - pos + 1));
            for (int j = 0; j < count && k > 0; j++, k--) {
                List<Integer> list = new ArrayList<>();
                list.add(nums1[i]);
                list.add(nums2[pos]);
                ans.add(list);
            }
        }
        return ans;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2072638.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Github 2024-08-25 php开源项目日报 Top10

根据Github Trendings的统计,今日(2024-08-25统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量PHP项目10Blade项目1Laravel: 以优雅语法简化Web开发 创建周期:4028 天开发语言:PHP协议类型:MIT LicenseStar数量:30824 个Fork数量:1052…

windows安装wsl,出现错误WslRegisterDistribution failed with error: 0x8007019e的解决方案

错误WslRegisterDistribution failed with error: 0x8007019e 笔者直接从Microsoft Store 安装 WSL后&#xff0c;没有其他操作&#xff0c;直接打开WSL&#xff0c;结果出现Error: 0x8007019e错误提示&#xff1a; Error 0x8007019e 解决方案 &#xff08;1&#xff09;Win…

滑块自动化分析

大家好!我是炒青椒不放辣,关注我,收看每期的编程干货。 滑块分析是爬虫工程师进阶必备技能,当我们遇到一个问题时可能会有多种解决途径,而如何做出高效的抉择和完善的解决流程又需要经验的积累。本期文章将以实战的方式,带你使用 playwright 进行滑块分析,不仅会告诉你应…

iPhone抹掉数据后能恢复吗?详解数据恢复的可能性与方法

在使用iPhone的过程中&#xff0c;有时候我们会因为各种原因选择“抹掉所有内容和设置”&#xff0c;以期望将手机恢复到出厂状态。然而&#xff0c;一旦执行了这个操作&#xff0c;很多用户就会开始担心&#xff1a;iPhone抹掉数据后&#xff0c;这些数据还能恢复吗&#xff1…

VMware安装Ubuntu20.04

1. 下载 整理的镜像链接 阿里网盘&#xff1a;阿里云盘快传 2. 新建虚拟机向导 选择自定义&#xff0c;然后下一步。 默认配置&#xff0c;下一步。 选择稍后安装操作系统&#xff0c;下一步。 选择操作系统Linux&#xff0c;版本Ubuntu64位&#xff0c;下一步。 给虚拟机命名…

2534. 乘方 [CSP-J 2022]

代码 #include<bits/stdc.h> using namespace std; int main() {long long n,m,i,sum1;cin>>n>>m;for(i1;i<m;i){sum*n;if(sum>1000000000){cout<<-1;return 0;;}}cout<<sum;return 0; } 记得点赞关注收藏&#xff01;&#xff01;&…

根据股票列表获取资金流入情况

获取股票列表 作为演示&#xff0c;以创业板为例&#xff08;数据不多&#xff09;&#xff0c;我们通过自编的 get_stock_list 方法获取股票列表&#xff1a; import pandas from bad import BigAData from tqdm.notebook import tqdmplate cyb bad BigAData() json bad.…

180页某项目可视化智能停车场系统技术解决方案WORD

今天分享的是一份《180页某项目可视化智能停车场系统技术解决方案WORD》&#xff0c;资料详细完整的描述了关于数智化停车场的建设方案&#xff0c;参考价值很高。 传统停车场存在进出场效率低、找车位难、找车难、管理难、管理成本高等诸多问题&#xff0c;本次建设的XX项目将…

四、控制结构

文章目录 引言一、顺序控制二、分支控制&#xff08;if&#xff0c;else&#xff0c;switch&#xff09;2.1 if 单分支2.2 if 双分支2.3 if 多分支2.4 if 嵌套分支2.5 switch分支结构2.6 switch和if的比较 三、循环控制&#xff08;for&#xff0c;while&#xff0c;dowhile&am…

[Linux#47][网络] 网络协议 | TCP/IP模型 | 以太网通信

目录 1.网络协议 2.协议分层 2.1 OSI七层模型 2.2TCP/IP五层(四层)模型 2.3 以太网通信 1.网络协议 "协议"本质就是一种约定 计算机之间的传输媒介是光信号和电信号. 通过 "频率" 和 "强弱" 来表示 0 和 1 这样的 信息. 要想传递各种不同…

全志616系统启动和登录

一、系统启动 刷完机烧入镜像&#xff0c;直接用MobaXterm软件串口登陆 约定固定的波特率115200。 默认登录&#xff1a; 用户&#xff1a;orangepi 密码&#xff1a;orangepi 或用户&#xff1a;root 密码&#xff1a;orangepi 在输入密码时…

SEO之网站结构优化(十三-网站地图)

** 初创企业搭建网站的朋友看1号文章&#xff1b;想学习云计算&#xff0c;怎么入门看2号文章谢谢支持&#xff1a; ** 1、我给不会敲代码又想搭建网站的人建议 2、“新手上云”能够为你开启探索云世界的第一步 博客&#xff1a;阿幸SEO~探索搜索排名之道 网站无论大小&…

5分钟学会使用Linux的 grep、find、ls、wc 命令

Linux基础命令和工具 一、前导&#xff1a;概述1.1、监控1.2、测试1.3、优化 二、grep 搜索字符三、find 查找文件四、ls 显示文件五、wc 命令六、总结 一、前导&#xff1a;概述 本系列主要讲解Linux运行时命令&#xff0c;包括网络、磁盘、内存、CPU相关参数等&#xff0c;主…

伏图芯片应力仿真功能介绍

随着电子产品向小型化、规模化、集成化方向发展&#xff0c;机械应力对器件性能的影响日益显著。产品在晶圆加工、芯片封装、元器件装配等过程中均会受到机械应力的作用&#xff0c;可能会直接影响芯片的电性能和可靠性。 仿真技术在芯片产品研发设计和故障排查阶段扮演着至关…

Python | Leetcode Python题解之第372题超级次方

题目&#xff1a; 题解&#xff1a; class Solution:def superPow(self, a: int, b: List[int]) -> int:MOD 1337ans 1for e in b:ans pow(ans, 10, MOD) * pow(a, e, MOD) % MODreturn ans

NIOS Eclipse突然报错:No rule to make target `/system.h

NIOS Eclipse突然报错&#xff1a;No rule to make target /system.h 今天打开NIOS Eclipse编译昨天完好的工程&#xff0c;发现报错。我就纳闷了&#xff0c;代码没有修改&#xff0c;编译结果报错 控制台中problems选线中显示&#xff1a; No rule to make target /system…

嵌入式开发神器——vim配置

本期主题&#xff1a; 讲解vim的一些配置&#xff0c;让大家也可以用上自己定制化的vim 目录 0. 目前个人所用的vim配置截图1. vim的插件1. 怎么找插件2. 如何安装插件3. 安装好了如何使用插件 2. 个人配置的vim链接 0. 目前个人所用的vim配置截图 1. vim的插件 1. 怎么找插件…

【Qt】输入类控件QSlider

目录 输入类控件QSlider 例子&#xff1a;调整窗口大小 例子&#xff1a;通过自定义快捷键调整滑动条位置 输入类控件QSlider 使用QSlider表示一个滑动条 QDail与QSlider都继承于QAbstractSlider&#xff0c;所以其用法基本相似。 核心属性 属性说明 value 持有的数值 mi…

【hot100篇-python刷题记录】【反转链表】

R6-链表篇 思路&#xff1a;想到使用2个指针来做 pre在head前,now就是head 初始&#xff1a;nowhead,predummy 每次需要进行的操作&#xff1a; tmpnow.next now.next-->pre prenow nowtmp class Solution:def reverseList(self, head: Optional[ListNode]) -> …

280Hz显示器哪家强

280Hz显示器哪家强&#xff1f;今天就给大家带来6大品牌和型号的280Hz显示器一起对比对比&#xff01; 1.280Hz显示器 - HKC G27H3显示器 HKC G27H3是一款高性价比的电竞显示器&#xff0c;以下是它的一些特点&#xff1a; - **高刷新率与快速响应**&#xff1a; - 拥有280H…