zoukankan      html  css  js  c++  java
  • lintcode学习

    Given a list of numbers, return all possible permutations.给定一个整数数组,返回所有可能的排列,假定数组中的元素不重复

    思路一个元素一个元素的处理,将新的元素插入到先前元素可能排列的空隙中。例如对数组[1,2,3]来说,首先处理第一个元素1,可能的排列只有一个即[1],第二个元素2插入到[1]中有两种情况即[1,2],[2,1].最后第三个元素3插入到以上两个情况中,有[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]。

    代码:

    vector<vector<int>> permute(vector<int> &nums) {
            // write your code here
            // write your code here
           vector<int> tmp;
           vector<vector<int>> res;
           vector<vector<int>> res_save,res_temp;
           int i=1,k=0;
           if(nums.size()==1){//只有一个元素和为空时返回本身
               res.push_back(nums);
               return res;
           }
           if(nums.empty()){
               res.push_back(nums);
               return res;
           }
           tmp.push_back(nums[0]);
           res.push_back(tmp);
           
           while(i<nums.size()){
               res_save.clear();
               res_temp.clear();
               res_save=res;
               res_temp=res;
               res.clear();
               for(int j=0;j<res_temp.size();j++){//遍历当前结果中所有的排列
                   while(k<=res_temp[j].size()){//将新的元素插入到指定位置
                       res_temp[j].insert(res_temp[j].begin()+k,nums[i]);
                       res.push_back(res_temp[j]);
                       res_temp.clear();
                       res_temp=res_save;
                       k++;
                   }
                   k=0;
               }
               i++;
           }
           return res;
        }
  • 相关阅读:
    流行的编程思维_面向对象-1
    db_Driver Manager
    SpringAOP
    Spring ioc的核心源码及拓展
    linux内核中把自己写的驱动添加到make menuconfig
    如何参考am335x ti官方技术
    AM335X linux嵌入式平台can驱动移植
    linux AM335x嵌入式平台spi驱动调试
    linux 设备树 gpio获取
    linux 为开发板添加板级文件config.h
  • 原文地址:https://www.cnblogs.com/bingzzzZZZ/p/8312693.html
Copyright © 2011-2022 走看看