从范围数组中查找缺失的范围

find missing range from array of ranges

本文关键字:范围 数组 查找      更新时间:2023-09-26

我有我的类的数组,具有最小值和最大值属性。

假设我的数组中有三个元素

First MinValue=0 and  MaxValue=25
Second MinValue=26 and  MaxValue=50
Third MinValue=75 and  MaxValue=100

Minvalue和Maxvalue的取值范围为0 ~ 100。

现在我想从上面有三个对象的数组中找到缺失的范围。

上面数组中缺少的范围是51到75

可以有一个以上的缺失值,我想找到最小MinValue的范围。

我想用javascript写代码。

请帮我解决这个问题

你应该试着自己动手解决这个问题。

var arr = [{ Min :0, Max:25 } , { Min:26, Max:28}, { Min:35, Max:41}, { Min:48, Max:71}];
var range = [];
for(var i = 0; i <= 100; i++)
{
    range.push(true); // first set it as missing...
}
for(var i = 0 ; i < arr.length ; i++)
{
    for(var j = arr[i].Min ; j <= arr[i].Max ; j++)
    {
        range[j] = false; // loop the array and set it to false
    }
}
var missingPart = '';
var start = false;
for(var i = 0 ; i < range.length ; i++) // loop the range array and build result
{
    if(range[i])
    {
        if(!start)
        {
            start = true;
            if(missingPart)
            {
                missingPart+=", ";
            }   
            missingPart += i;
        }
    }
    else
    {
        if(start)
        {
            start = false;
            missingPart += ("-" + (i-1));
        }
    }
}
if(start)
{
    missingPart += ("-100");
}
document.getElementById("counter").innerHTML = missingPart

在这里找到jsFiddle结果:http://jsfiddle.net/gm4HG/2/

从当前minValue中减去之前的maxValue。差值应该总是1。循环遍历所有值以查找缺失的范围。