首页 > 其他分享 >有序矩阵中的第 k 个最小数组和

有序矩阵中的第 k 个最小数组和

时间:2023-05-28 15:23:09浏览次数:43  
标签:pre 数组 int mat 矩阵 ++ 有序 size cur

1. 暴力记录前k个

class Solution {
public:
    int kthSmallest(vector<vector<int>>& mat, int k) {
        vector<int> pre(k,0); //存储前k个最小的和
        int cur[mat[0].size() * k]; //存储
        int size = 1;//用于记录pre当前大小
        for (auto& row : mat) {//遍历每一行
            int i = 0; //从0开始, 对当前行
            for (int j = 0; j < size; ++j) { //遍历pre里面所有数
                for (int& v : row) { //遍历当前行所有数
                    cur[i++] = pre[j] + v;  //计算当前轮次所有数组和
                }
            }
            sort(cur, cur + i); //对cur里面的数排序
            size = min(i, k); //更新pre数组大小,刚开始pre可能放不满
            for (int j = 0; j < size; ++j) //记录前k个
                pre[j] = cur[j];
        }
        return pre[k - 1];
    }
};

标签:pre,数组,int,mat,矩阵,++,有序,size,cur
From: https://www.cnblogs.com/929code/p/17438294.html

相关文章

  • Golang GIN 接收结构体切片(前端对象数组)
    想接收前端这样的数据格式:【json数组】[{"password":"casso","mobile":"13456789999","nick_name":"go","icon":"地址"},{"passwor......
  • php循环创建数组
    PHP中可以使用for循环、while循环和foreach循环来创建数组。下面是一个使用for循环创建数组的示例代码:<?php$myArray=array();for($i=0;$i<5;$i++){$myArray[$i]=$i*2;}print_r($myArray);?>该代码将创建一个空数组,然后使用for循环遍历数组并为每个元素......
  • 深入分析:矩阵梯度类实例研究
    写在前面本文主要用于围绕矩阵类求梯度等问题进行证明与分析,由于笔者的数理基础浅薄,下面的证明过程若存在错误,欢迎评论指正。矩阵梯度的通用方法:先将矩阵写成微分形式,\(df=tr(GdX)\),然后得到$\nablaf=G^T$案例1\(\begin{array}{ll}\min_{U}&\dfrac{1}{2}\left\|\boldsymbol{......
  • 算法刷题记录:回行矩阵(未AC,TLE了)
    题目链接:https://ac.nowcoder.com/acm/contest/19306/1026题目分析这种题,画个图,模拟就对啦。TLE代码#include<iostream>usingnamespacestd;intn,cnt;intw[25][25];intmain(){cin>>n;//构建框架intdx=1,dy=1;while(1)......
  • 数组的拷贝
    packagecom.Demo;//数组的拷贝publicclassTest5{publicstaticvoidmain(String[]args){int[]arr={11,22,33};int[]arr2=copy(arr);dayin(arr2);}publicstaticvoiddayin(int[]arr){System.out.print("[&qu......
  • leetcode:合并两个有序数组
    题目给你两个按非递减顺序排列的整数数组 nums1和nums2,另有两个整数m和n,分别表示nums1和nums2中的元素数目。请你合并nums2到nums1中,使合并后的数组同样按非递减顺序排列。注意:最终,合并后数组不应由函数返回,而是存储在数组nums1中。为了应对这种情况,nums1......
  • 静态初始化数组
    1packagecom.karl1;23publicclassArrayDemo{4publicstaticvoidmain(String[]args){5//静态初始化数组67//1.数据类型[]数组名=new数据类型[]{元素1,元素2,元素3.。。。。};8int[]ages=newint[]{1,24,36};9......
  • 数组的遍历
    packagecom.karl1;publicclassArrayDemo2{publicstaticvoidmain(String[]args){//数组的遍历int[]ages={12,24,36};//012for(inti=0;i<ages.length;i++){System.out.println(ag......
  • 数组的访问
    packagecom.karl1;publicclassArrayDemo1{publicstaticvoidmain(String[]args){//数组的访问int[]arr={12,24,36};//012//访问数据System.out.println(arr[0]);System.out.println(arr[1]......
  • 多个变量指向同一个数组对象
    packagecom.karl1;publicclassArrayDemo4{publicstaticvoidmain(String[]args){//多个变量指向同一个数组对象的形式int[]arr1={11,22,33};//把int类型的数组变量arr1赋值给int类型的数组变量arr2int[]arr2=arr1;......