今天在LeetCode刷题时遇到需要对二维数组的数组项进行去重,题目链接:三数之和,给定一个数组,取出所有三个数相加等于0的不重复的项
我给出了一个解决方案,不过时间复杂度没通过,后期再改:
var threeSum = function(nums) {
var len=nums.length;
var arr=[];
var res=[];
var result=[];
//取出所有三个数之和为0的项存入数组
for(var i=0;i<len;i++){
for(var j=i+1;j<len;j++){
for(var k=j+1;k<len;k++){
if(nums[i]+nums[j]+nums[k]===0){
arr.push(nums[i],nums[j],nums[k]);
res.push(arr);
arr=[];
}
}
}
}
//排序
res.map(item=>{
item.sort(function(v1,v2){
if(v1<v2){
return -1;
}else{
return 1;
}
})
})
//去重
for(var i=0;i<res.length;i++){
for(var j=i+1;j<res.length;j++){
if(res[i][0]===res[j][0] && res[i][1]===res[j][1] && res[i][2]===res[j][2]){
j=++i;
}
}
result.push(res[i]);
}
console.log(result)
};
原文:https://www.cnblogs.com/xingguozhiming/p/9165198.html