1. 程式人生 > >LeetCode 18 四數之和 (4sum) —— 關於二維動態陣列的初始化

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; } };

結果並未通過,原因是包含重複的四元組。
在這裡插入圖片描述

這裡只是為二維動態陣列的建立提供思路。至於如何排除重複四元組,以及如何降低複雜度,請讀者自行思考,閒時會再更。