2013-02-27 103 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.循環遍歷所有值以找到丟失的範圍。