leetcode60. 第k个排列(回溯算法)
生活随笔
收集整理的這篇文章主要介紹了
leetcode60. 第k个排列(回溯算法)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
給出集合 [1,2,3,…,n],其所有元素共有 n! 種排列。
按大小順序列出所有排列情況,并一一標(biāo)記,當(dāng) n = 3 時(shí), 所有排列如下:
“123”
“132”
“213”
“231”
“312”
“321”
給定 n 和 k,返回第 k 個(gè)排列。
說(shuō)明:
給定 n 的范圍是 [1, 9]。
給定 k 的范圍是[1, n!]。
示例 1:
輸入: n = 3, k = 3
輸出: “213”
代碼
class Solution {int tar;String ress=null;public String getPermutation(int n, int k) {tar=k;permutation(n,new boolean[n+1],new StringBuilder());return ress;}public void permutation(int n, boolean[] check,StringBuilder stringBuilder) {if(ress!=null) return;if(stringBuilder.length()==n)//排列完成{if(--tar==0)//檢查是否為第k個(gè)數(shù)ress=stringBuilder.toString();}for (int i=1;i<=n;i++)//遍歷可以選擇的數(shù)字{if(check[i]) continue;check[i]=true;stringBuilder.append(i);permutation(n,check,stringBuilder);check[i]=false;//回溯stringBuilder.deleteCharAt(stringBuilder.length()-1);}} }總結(jié)
以上是生活随笔為你收集整理的leetcode60. 第k个排列(回溯算法)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 梦到亲人被砍死了是什么征兆
- 下一篇: 孕妇梦到大蛇和小蛇预示着什么