js中二维数组数组项去重

今天在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)
  
};

  

猜你喜欢

转载自www.cnblogs.com/xingguozhiming/p/9165198.html