LeetCode 18 四数之和 (4sum) —— 关于二维动态数组的初始化

本题中,二维动态数组的初始化。

本题每一行元素的数量是确定的,而不确定有几列的情况
vector s(4,0);//每一行元素,定义为一维数组
vector<vector> result;//定义一个二维数组
//选出每一个s的过程
result.push_back(s);//将每个一维数组填入二维数组中

初步敲定的程序如下:

// An highlighted block
var foo = 'bar';
class Solution {
public:
    vector<vector<int>> fourSum(vector<int>& nums, int target) {        
        vector<int> s(4,0);
        vector<vector<int>> result; 
        
        if(nums.size()<4)
            return result;
        
        for(int i = 0; i<nums.size()-3; i++)
        {
            for(int j = i+1; j<nums.size()-2; j++)
            {   
                for(int k = j+1; k<nums.size()-1; k++)
                {
                    for(int l = k+1; l<nums.size(); l++)
                    {
                        if(nums[i]+nums[j]+nums[k]+nums[l] == target)
                        {
                            s[0] = nums[i];
                            s[1] = nums[j];
                            s[2] = nums[k];
                            s[3] = nums[l];

                            result.push_back(s);
                        }
                    }
                }
            }
        }
        return result;
    }   
};

结果并未通过,原因是包含重复的四元组。
在这里插入图片描述

这里只是为二维动态数组的创建提供思路。至于如何排除重复四元组,以及如何降低复杂度,请读者自行思考,闲时会再更。

猜你喜欢

转载自blog.csdn.net/weixin_42979679/article/details/84193619