給定數組 nums 和目標值 target,找出所有不重複的四元組 [a,b,c,d] 使和為 target。四元組內非降序,解集不重複。
排序數組。kSum(start, k, target) 返回從 start 開始的 k 數之和為 target 的所有組合。
- k==2:雙指針雙數之和,去重。
- k>2:遍歷 i 從 start 到 n-k,剪枝(最小和 > target / 最大和 < target),遞歸調用 kSum(i+1, k-1, target-nums[i]),拼接結果。
去重關鍵:if (i>start && nums[i]==nums[i-1]) continue;。
方法 時間 空間 備註 雙指針 O(n³) O(1) 常數小,工程首選 HashMap 平均 O(n²) O(n²) 最壞 O(n⁴),需大量內存 K-Sum 遞歸 O(n^{k-1}) O(k) 通用框架,易擴展