码迷,mamicode.com
首页 > 其他好文 > 详细

491. Increasing Subsequences

时间:2018-07-14 16:41:08      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:不能   amp   思路   ++   item   col   out   ||   哈希表   

 

这种increasing xxx 题真是老客户了.. 本题麻烦点在于不能重复, 但是和之前的那些 x sum的题目区别在于不能排序的

所以.... 我还是没搞定.

 

看了一个Java的思路是直接用set来存最终结果去重;  不太清楚Java的set自带比较函数? 用cpp的话就要为vector<int>编写hash函数...

cpp的方案有点特别, 每次递归的时候用一个哈希表记录有哪些数字已经用过了..很巧妙

 

class Solution {
public:
    typedef vector<int> VI;
    typedef vector<VI> VVI;
    void traverse(VVI &out, VI &item, VI &src, int i)
    {
        unordered_set<int> si;
        for(int j=i;j<src.size();++j)
        {
            if((item.empty()||src[j]>=item.back())&&si.find(src[j])==si.end())
            {
                item.push_back(src[j]);
              if(item.size()>1)out.push_back(item);
                traverse(out,item,src,j+1);
                item.pop_back();
                si.insert(src[j]);
            }
        }
    }
    vector<vector<int>> findSubsequences(vector<int>& nums) {
        VVI ret;
        VI item;
        traverse(ret,item,nums, 0);
        return ret;
    }
};

 

491. Increasing Subsequences

标签:不能   amp   思路   ++   item   col   out   ||   哈希表   

原文地址:https://www.cnblogs.com/lychnis/p/9309598.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!