zoukankan      html  css  js  c++  java
  • 9.全排列

     题目:

    给定一个数字列表,返回其所有可能的排列。

     注意事项

    你可以假设没有重复数字。

    class Solution {
    public:
        /**
         * @param nums: A list of integers.
         * @return: A list of permutations.
         */
        vector<vector<int> > permute(vector<int> nums) {
            // write your code here
            vector<vector<int> > result;
            if (nums.size() == 0 || nums.size() == 1) {
                result.push_back(nums);
                return result;
            }
            sort(nums.begin(), nums.end());
            while (true){
                int p, i;
                result.push_back(nums);
                for (i = nums.size()-1; i >= 0; i--) {
                    if (i <= 0)
                        return result;
                    if (nums[i-1] < nums[i]) {
                        p = i-1;
                        break;
                    }
                    }
                for (int j = nums.size()-1; j > p; j--) {
                    if (nums[j] > nums[p]) {
                        swap(nums[p], nums[j]);
                        break;
                    }
                }
                reverse(nums.begin() + p+1, nums.end());
            }
        }
    };

  • 相关阅读:
    二重循环
    汇编中的大小写转换
    编译出错:must be index or base register
    [bx]和loop指令
    poj1012约瑟夫
    fenshijin
    poj3050
    抹蛋糕
    poj1190
    uuu
  • 原文地址:https://www.cnblogs.com/ALIMAI2002/p/7211297.html
Copyright © 2011-2022 走看看