博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
60. Permutation Sequence
阅读量:6278 次
发布时间:2019-06-22

本文共 1771 字,大约阅读时间需要 5 分钟。

The set [1,2,3,...,n] contains a total of n! unique permutations.

By listing and labeling all of the permutations in order, we get the following sequence for n = 3:

"123""132""213""231""312""321"

Given n and k, return the kth permutation sequence.

Note:

Given n will be between 1 and 9 inclusive.Given k will be between 1 and n! inclusive.

Example 1:

Input: n = 3, k = 3Output: "213"

Example 2:

Input: n = 4, k = 9Output: "2314"

难度:medium

题目:集合[1, 2, 3, .... n]包含n!个不同的排列。有序的列出所有排列

给定n和k, 返回第k个序列。

思路:结合next_permutation。此方法非简单方法。

Runtime: 31 ms, faster than 16.21% of Java online submissions for Permutation Sequence.

Memory Usage: 37.6 MB, less than 6.50% of Java online submissions for Permutation Sequence.

class Solution {    public String getPermutation(int n, int k) {        int[] nums = new int[n];        for (int i = 0; i < n; i++) {            nums[i] = i + 1;        }        for (int i = 0; i < k - 1; i++) {            nextPermutation(nums);        }        StringBuilder sb = new StringBuilder();        for (int i = 0; i < n; i++) {            sb.append(nums[i]);        }                return sb.toString();    }        public void nextPermutation(int[] nums) {        if (null == nums || nums.length <= 1) {            return;        }        int right = nums.length - 1, j = right;        for (; j > 0; j--){            if (nums[j - 1] < nums[j]) break;        }        for (int k = right; k >= 0; k--) {            if (j > 0 && nums[k] > nums[j - 1]) {                swap(nums, j - 1, k);                break;            }        }        for (; j < right; j++, right--) {            swap(nums, j, right);        }    }        private void swap(int[] nums, int i, int j) {        int t = nums[i];        nums[i] = nums[j];        nums[j] = t;    }}

转载地址:http://snfva.baihongyu.com/

你可能感兴趣的文章
简单易懂的谈谈 javascript 中的继承
查看>>
iOS汇编基础(四)指针和macho文件
查看>>
Laravel 技巧锦集
查看>>
Android 使用 ViewPager+RecyclerView+SmartRefreshLayout 实现顶部图片下拉视差效果
查看>>
Flutter之基础Widget
查看>>
写给0-3岁产品经理的12封信(第08篇)——产品运营能力
查看>>
ArcGIS Engine 符号自动化配置工具实现
查看>>
小程序 · 跳转带参数写法,兼容url的出错
查看>>
flutter error
查看>>
Flask框架从入门到精通之模型数据库配置(十一)
查看>>
10年重新出发
查看>>
2019年-年终总结
查看>>
聊聊elasticsearch的RoutingService
查看>>
让人抓头的Java并发(一) 轻松认识多线程
查看>>
从源码剖析useState的执行过程
查看>>
地包天如何矫正?
查看>>
中间件
查看>>
Android SharedPreferences
查看>>
css面试题
查看>>
Vue组建通信
查看>>