题解 | #牛牛的三元组问题#

牛牛的三元组问题

https://www.nowcoder.com/practice/72c6d735fb1144a2ba162976a4510839

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型vector 
     * @return int整型vector<vector<>>
     */

    int jumptodiff(vector<int>& nums,int index) {
        int temp = nums[index];
        while (index < nums.size() && temp == nums[index]) {
            ++index;
        }
        return index;
    }

    void find_res(vector<vector<int>>& res, vector<int>& subres, vector<int>& nums, int sum, int index) {
        if (subres.size() == 3 && sum == 0) {
            res.push_back(subres);
            return;
        }
        else if (subres.size() == 3 && sum != 0) {
            return;
        }
        if (index < nums.size()) {

            // contain index
            subres.push_back(nums[index]);
            sum += nums[index];
            find_res(res, subres, nums, sum, index + 1);
            subres.pop_back();
            sum -= nums[index];

            // ignori index, jump to different value
            int index_next = jumptodiff(nums, index);
            find_res(res, subres, nums, sum, index_next);

        }
        return;
    }

    vector<vector<int>> findTriplets(vector<int>& nums) {
        // write code here
        sort(nums.begin(), nums.end());
        // recursion
        vector<vector<int>> res;
        vector<int> subres;
        find_res(res, subres, nums, 0, 0);
        return res;
    }
};

全部评论

相关推荐

用微笑面对困难:你一定很懂劳务法 是不是因为这个hr不敢要
点赞 评论 收藏
分享
程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务