zoukankan      html  css  js  c++  java
  • leecode第九十题(子集II)

    class Solution {
    public:
        vector<vector<int>> subsetsWithDup(vector<int>& nums) {
            int len=nums.size();
            sort(nums.begin(),nums.end());//唉,排序啊
            
            vector<vector<int>> result;
            vector<int> temp;
            result.push_back(temp);
            if(len==0)
                return result;
            else//首先将第一个字符打进去
            {
                temp.push_back(nums[0]);
                result.push_back(temp);
            }
            int new_num=1;//设置一个指针,为上一步新添加vector的起始位置
                
            
            for(int i=1;i<len;i++)
            {
                int start=0;
                if(nums[i]==nums[i-1])//如果当前字符和上一个字符相等,则从new_num开始
                    start=new_num;
                int len_cur_res=result.size();
                
                while(start<len_cur_res)//为start到最后所有的vector后接一个num[i],然后重新打入result
                {
                    temp=result[start];
                    temp.push_back(nums[i]);
                    result.push_back(temp);
                    start++;
                }
                
                new_num=len_cur_res;//更新指针
            }
            return result;
        }
    };

    分析:

    受教了。

  • 相关阅读:
    SNOI2017炸弹
    tarjan进阶
    BZOJ3331压力
    将多个对象合并为一个对象
    原型模式详解
    HTML5
    isAnimated函数
    让函数执行的各种方式
    zepto源码注解
    mobileTech
  • 原文地址:https://www.cnblogs.com/CJT-blog/p/11224020.html
Copyright © 2011-2022 走看看