zoukankan      html  css  js  c++  java
  • LeetCode--Combination Sum II

    思路:类似于上一题,但是加了一个index数组记录结果里面已经存放的元素索引,

    用来判断当前的元素是否和上一个相同并且上一个是否使用过。

    主要为了解决重复解的问题。

     1 class Solution {
     2 public:
     3     vector<vector<int> >ans;
     4     vector<vector<int> > combinationSum2(vector<int> &num, int target) {
     5         if(num.size() == 0)
     6             return ans;
     7         sort(num.begin(),num.end());
     8         vector<int> res;
     9         vector<int> index;
    10         calSum(num,target,0,res,index);
    11         return ans;
    12     }
    13     void calSum(vector<int> &num,int target,int s,vector<int> &res,vector<int> &index)
    14     {
    15         if(target < 0)
    16             return;
    17         if(target == 0)
    18         {
    19             ans.push_back(res);
    20             return;
    21         }
    22         int i;
    23         for(i = s ; i < num.size() ; ++i)
    24         {
    25             if(i >0 && index[index.size()-1] != i-1 && num[i] == num[i-1])
    26                 continue;
    27             index.push_back(i);
    28             res.push_back(num[i]);
    29             calSum(num,target-num[i],i+1,res,index);
    30             res.pop_back();
    31             index.pop_back();
    32         }
    33         return;
    34     }
    35 };
  • 相关阅读:
    Java从零开始学二十一(集合List接口)
    Java从零开始学二十(集合简介)
    初识软件工程一
    JAVA中AES对称加密和解密
    java中的数据加密
    Redis哨兵
    Nginx
    Zuul介绍
    ELK快速搭建日志平台
    Kibana安全特性之权限控制
  • 原文地址:https://www.cnblogs.com/cane/p/3888862.html
Copyright © 2011-2022 走看看