2013-02-27 60 views
-2

我有我的班级有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编写代码。

请帮我解决这个问题。

+1

写的东西开始。任何东西。 – Blender 2013-02-27 05:31:30

+0

你会处理重叠的情况吗? MinValue = 0,MaxValue = 25,MinValue = 20,MaxValue = 50? – Derek 2013-02-27 05:36:34

+0

上面数组中缺少的范围应该是51到74? – Derek 2013-02-27 05:41:49

回答

0

你应该尝试自己启动并处理这个问题。

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/

0

从当前minValue减去以前的maxValue。差异应该始终为1.循环遍历所有值以找到丢失的范围。