从范围数组中发现缺少的范围
问题描述:
我有我的班级有Minvalue和Maxvalue属性的数组。从范围数组中发现缺少的范围
假设在我的阵列我有三个要素
First MinValue=0 and MaxValue=25
Second MinValue=26 and MaxValue=50
Third MinValue=75 and MaxValue=100
MINVALUE和MAXVALUE之间可以0到100
现在我想从有三个以上的对象数组找到丢失的范围。
丢失的范围在上述阵列是在那个时候我想找到具有最小MINVALUE范围51至75
可以有多于一个的缺失值。
我想用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.循环遍历所有值以找到丢失的范围。
写的东西开始。任何东西。 – Blender 2013-02-27 05:31:30
你会处理重叠的情况吗? MinValue = 0,MaxValue = 25,MinValue = 20,MaxValue = 50? – Derek 2013-02-27 05:36:34
上面数组中缺少的范围应该是51到74? – Derek 2013-02-27 05:41:49