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

373. 查找和最小的 K 对数字

参考的这个博客:
https://zhuanlan.zhihu.com/p/457239781
然后看这个代码我想到了另外一种方法,就是一步一步往里加元组 ( i , j ) (i,j) (i,j),看代码就知道了,不过需要做一步去重,去重不能用 i n t [ ] int[] int[]做,转换成字符串做比较好。

class Solution {
    public List<List<Integer>> kSmallestPairs(int[] nums1, int[] nums2, int k) {
        List<List<Integer>> ans = new ArrayList<>();
        PriorityQueue<int[]> q = new PriorityQueue<>((a,b)->((nums1[a[0]]+nums2[a[1]])-(nums1[b[0]]+nums2[b[1]])));
        // for(int i=0;i<nums1.length;i++){
        //     q.add(new int[]{i,0});
        // }
        q.add(new int[]{0,0});
        HashMap<String,Integer> mp = new HashMap<String,Integer>();
        mp.put((Arrays.toString(new int[]{0,0})),1);
        while(ans.size()<k && !q.isEmpty()){
            int[] poll = q.poll();
            int a = poll[0];
            int b = poll[1];
            ArrayList<Integer> arr = new ArrayList<Integer>();
            arr.add(nums1[a]);
            arr.add(nums2[b]);
            ans.add(arr);
            if(b+1<nums2.length && !mp.containsKey(Arrays.toString(new int[]{a,b+1})))
            {
                mp.put((Arrays.toString(new int[]{a,b+1})),1); q.add(new int[]{a,b+1});
            } 
            if(a+1<nums1.length && !mp.containsKey(Arrays.toString(new int[]{a+1,b})))
            {
                q.add(new int[]{a+1,b}); mp.put((Arrays.toString(new int[]{a+1,b})),1);
            } 
            if(a+1<nums1.length && b+1<nums2.length && !mp.containsKey(Arrays.toString(new int[]{a+1,b+1})))
            {
                 q.add(new int[]{a+1,b+1});mp.put((Arrays.toString(new int[]{a+1,b+1})),1);
            }   
        }
        return ans;

    }
}

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

相关文章:

  • C# 数据类型详解:掌握数据类型及操作为高效编码奠定基础
  • SpringBoot开发——Spring Boot中实现订单30分钟自动取消的策略
  • 常用函数的使用错题汇总
  • Springboot集成通义大模型
  • 贪心-区间问题——acwing
  • C# 中的接口:定义行为契约与实现多态性
  • QTableView 实现表格及相关用法(C++)(QStandardItemModel+QItemSelectionModel)
  • [Linux] 进程间通信——匿名管道命名管道
  • 提升异步编程性能:使用 uvloop 加速你的 Python 应用
  • 云硬盘挂载到新服务器,怎么恢复数据?
  • 命令提示符窗口(CMD)控制windows操作系统
  • MySQL自启动失败(MySQL不能开机自启)解决方案_MySQL开机自启疑难杂症解决,适用Win11/Win10
  • Redis 分布式锁实现方案
  • Leecode刷题C语言之判断是否可以赢得数字游戏
  • 在CentOS7上更换为阿里云源
  • 【RK3588 Linux 5.x 内核编程】-发送信号到用户空间
  • 高级IO
  • Golang面经
  • Linux 安装scala
  • Ansible自动化一键部署单节点集群架构
  • zotero文献阅读配置1:待更新
  • 【Oracle11g SQL详解】ORDER BY 子句的排序规则与应用
  • pandas数据处理及其数据可视化的全流程
  • 爬虫与反爬-旋转验证码突破方案(知名短视频、TK海外版 及 某东等等)
  • Java设计模式 —— 【创建型模式】原型模式(浅拷贝、深拷贝)详解
  • (附项目源码)PHP开发语言,225 基于PHP的高校二手物品交易系统的设计与实现,计算机毕设程序开发+文案(LW+PPT)