在工作中碰到這麼一個問題:給定一個已經排序的數組(升序),刪除數組中重復的數據,但是只能使用一個數組,這個數組的大小可以變化.
例子: 數組:[1,1,2,2,3,3,4,5,7,10]
輸出::[1,2,3,4,5,7,10]
實現(1):
var arr =new Array(1,1,2,2,3,3,4,5,7,10);
var len = arr.length;
for(var i=len-1;i>=1;i--)
{
if(arr[i-1] == arr[i])
{
arr.splice(i,1);
}
}
alert(arr);
實現(2):
var arr =new Array(1,1,2,2,3,3,4,5,7,10);var len = arr.length;var k=0;for(var i=1;i<len;i++){ if(arr[k] != arr[i]) { arr[k+1]=arr[i]; k++; } }alert(arr);
但是發現其性能並不是最好的,不知道您是否有更好的算法.(實現語言可以是JavaScript,C#,VB.net,.....)