首页 > 其他分享 >困难-632. 最小区间

困难-632. 最小区间

时间:2022-10-11 21:47:45浏览次数:50  
标签:24 632 20 nums max 最小 列表 preList 区间

设置n个哨兵,n为数组nums的长度,每个哨兵初始指向为0
不停的计算最小和最大,最小的哨兵指针加1,一直到结束

你有 k 个 非递减排列 的整数列表。找到一个 最小 区间,使得 k 个列表中的每个列表至少有一个数包含在其中。

我们定义如果 b-a < d-c 或者在 b-a == d-c 时 a < c,则区间 [a,b] 比 [c,d] 小。

 

示例 1:

输入:nums = [[4,10,15,24,26], [0,9,12,20], [5,18,22,30]]
输出:[20,24]
解释:
列表 1:[4, 10, 15, 24, 26],24 在区间 [20,24] 中。
列表 2:[0, 9, 12, 20],20 在区间 [20,24] 中。
列表 3:[5, 18, 22, 30],22 在区间 [20,24] 中。
示例 2:

输入:nums = [[1,2,3],[1,2,3],[1,2,3]]
输出:[1,1]
 

提示:

nums.length == k
1 <= k <= 3500
1 <= nums[i].length <= 50
-105 <= nums[i][j] <= 105
nums[i] 按非递减顺序排列
 

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/smallest-range-covering-elements-from-k-lists
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

/**
 * @param {number[][]} nums
 * @return {number[]}
 */
var smallestRange = function(nums) {
    const preList=[]

    nums.forEach(function(){
        preList.push(0)
    })

    let min=0,max=0;
    let back
    let isLock=true
    while(isLock){
        preList.forEach(function(i,k){
          if(nums[k][i]>nums[max][preList[max]]){
                max=k
            }
            if(nums[k][i]<nums[min][preList[min]]){
                min=k
            }
        })
        const arr=[nums[min][preList[min]],nums[max][preList[max]]]
        if(!back||arr[1]-arr[0]<back[1]-back[0]){
            back=arr
        }
        if(arr[1]===arr[0]||preList[min]+1===nums[min].length){
            isLock=false
        }else{
            preList[min]=preList[min]+1
        }
        
    }

    return back
};

 

标签:24,632,20,nums,max,最小,列表,preList,区间
From: https://www.cnblogs.com/caoke/p/16782667.html

相关文章

  • 【图论——第七讲】Pirm算法求最小生成树问题及其堆优化
    文章目录​​一、前言​​​​二、Pirm算法求最小生成树​​​​三、Pirm算法堆优化​​​​最后​​一、前言最小生成树定义:一个有n个结点的连通图的生成树是原图的极小......
  • YACS 2022年9月月赛 甲组 T2 区间交集(三) 题解
    所以说,我又来贴标程了。这题有很多做法,线段树,优先队列$and$删除等等,这里分享一种码量极少的二分做法,主要思路:二分+动归#include<bits/stdc++.h>usingnamespacestd;......
  • #yyds干货盘点# LeetCode 热题 HOT 100:最小覆盖子串
    题目:给你一个字符串s、一个字符串t。返回s中涵盖t所有字符的最小子串。如果s中不存在涵盖t所有字符的子串,则返回空字符串""。 注意:对于t中重复字符,我们寻......
  • 最小生成树prim算法实现
    今天从志权师兄那里学会了最小生成树。所谓生成树,就是n个点之间连成n-1条边的图形。而最小生成树,就是权值(两点间直线的值)之和的最小值。           首先,要用......
  • Leecode 111.二叉树的最小深度
    /**Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderight;*TreeNode(){}*......
  • 最小表示法
    最小表示法定义求\(\text{argmin}_{i=1}^n(S_i\simS_n+S_1\simS_{i-1})\)。通俗地说,不断将字符串末尾的字符移到开头,得到的\(n\)个字符串中的字典序最小者即为字符......
  • 精度高效率最快存储最小的目标检测模型(附源码下载)
    计算机视觉研究院专栏作者:Edison_G 杭州市疫情以来,各路研究爱好者开始新的研究,目前已经被研究出很多高效高精度的框架,在深度学习领域,模型效率也是越来越重的一个研究课题......
  • 目前精度最高效率最快存储最小的目标检测模型(附源码下载)
    公众号ID|ComputerVisionGzq学习群|扫码在主页获取加入方式计算机视觉研究院专栏作者:Edison_G疫情以来,各路研究爱好者开始新的研究,目前已经被研究出很多高效高精度的框架,在深......
  • 801. 使序列递增的最小交换次数
    题目描述给了两个整型数组nums1和nums2,数组长度相等且不为空,定义了一个操作:可以交换两个数组中同索引的元素如果要使nums1和nums2严格递增,问最小的操作次数?(用例保证可以......
  • acwing.第72场周赛 t3最小移动距离
    AcWing4626.最小移动距离原题链接:https://www.acwing.com/problem/content/4629/思路要求对于每一个点x都满足走过t,到达一个目标点y.并且x和y都可以互为目标点。找出......