Leetcode 46 Permutations

Given a collection of distinct numbers, return all possible permutations.

For example,
[1,2,3] have the following permutations:

[
  [1,2,3],
  [1,3,2],
  [2,1,3],
  [2,3,1],
  [3,1,2],
  [3,2,1]
]
# @param {Integer[]} nums
# @return {Integer[][]}
def permute(nums)
    return [[]] if nums.empty?
    a = Array.new(nums).map{|x| [x]}
    while a[0].length < nums.length
        b = Array.new()
        a.each do |x|
            (nums-x).each {|y| b << x + [y]}
        end
        a = b
    end
    a
end

 

posted @ 2016-09-27 06:12  lilixu  阅读(114)  评论(0编辑  收藏  举报