zoukankan      html  css  js  c++  java
  • 46. Permutations

    /**
     * 46. Permutations
     * https://leetcode.com/problems/permutations/description/
     * Given a collection of distinct integers, return all possible permutations.
    Example:
    Input: [1,2,3]
    Output:
    [
    [1,2,3],
    [1,3,2],
    [2,1,3],
    [2,3,1],
    [3,1,2],
    [3,2,1]
    ]
     * */
    class Solution {
        val result = ArrayList<List<Int>>()
        var userd: BooleanArray? = null
        //dfs+backtracking
        fun permute(nums: IntArray): List<List<Int>> {
            val cur = ArrayList<Int>()
            userd = BooleanArray(nums.size)
            dfs(0, cur, nums)
            return result
        }
    
        fun dfs(n: Int, cur: ArrayList<Int>, nums: IntArray) {
            if (n == nums.size) {
                val temp = ArrayList<Int>()
                temp.addAll(cur)
                result.add(temp)
                return
            }
            for (i in 0 until nums.size) {
                if (userd!![i]) {
                    continue
                }
                userd!![i] = true
                cur.add(nums[i])
                dfs(n + 1, cur, nums)
                cur.removeAt(cur.size - 1)// as cur pop()
                userd!![i] = false
            }
        }
    }
  • 相关阅读:
    0803C#如何高效读取EXCEL文件
    0711笔记
    笔记0709
    0708:XML专题
    笔记0705
    笔记0704
    笔记0627
    笔记0626
    gridview合并单元格
    笔记0624
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/12506159.html
Copyright © 2011-2022 走看看