From 185ef9fcb0e59f13e9ee0ccb261693cdaddebab0 Mon Sep 17 00:00:00 2001 From: crupest Date: Tue, 23 Feb 2021 21:07:19 +0800 Subject: import(solutions): Move leetcode solutions to subdir. --- works/solutions/leetcode/cpp/60.cpp | 44 +++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 works/solutions/leetcode/cpp/60.cpp (limited to 'works/solutions/leetcode/cpp/60.cpp') diff --git a/works/solutions/leetcode/cpp/60.cpp b/works/solutions/leetcode/cpp/60.cpp new file mode 100644 index 0000000..f090355 --- /dev/null +++ b/works/solutions/leetcode/cpp/60.cpp @@ -0,0 +1,44 @@ +#include +#include + +using std::string; + +class Solution +{ +public: + string getPermutation(int n, int k) + { + k--; + + string result; + result.reserve(n); + + std::vector nums; + nums.reserve(n); + + for (int i = 1; i <= n; i++) + { + nums.push_back(i + '0'); + } + + n--; + int fac = 1; + for (int i = 2; i <= n; i++) + { + fac *= i; + } + + while (n > 0) + { + const int index = k / fac; + k = k % fac; + result += nums[index]; + nums.erase(nums.cbegin() + index); + fac /= n--; + } + + result += nums.front(); + + return result; + } +}; \ No newline at end of file -- cgit v1.2.3