1. 程式人生 > 實用技巧 >LeetCode—— 四數之和

LeetCode—— 四數之和

題目地址:https://leetcode-cn.com/problems/4sum/

解題思路:和之前三數求和類似,只不過多了層迴圈。

class Solution {
public:
    vector<vector<int>> fourSum(vector<int>& nums, int target) {
        sort(nums.begin(), nums.end());
        vector<vector<int>> ans;
        int a, b, c, d;
        int len = nums.size();
        
if (len < 4) return ans; for (a = 0; a < len; a++) { if (a > 0 && nums[a] == nums[a - 1]) continue; for (b = a + 1; b < len; b++) { if (b > a + 1 && nums[b] == nums[b - 1]) continue
; c = b + 1; d = len - 1; while (c < d) { if (c > b + 1 && nums[c] == nums[c - 1]) { c++; continue; } while (c < d&&nums[a] + nums[b] + nums[c] + nums[d] > target) d
--; while (c < d&&nums[a] + nums[b] + nums[c] + nums[d] < target) c++; if (c < d&& nums[a] + nums[b] + nums[c] + nums[d] == target) { ans.push_back({ nums[a],nums[b], nums[c], nums[d] }); c++; } } } } return ans; } };