From e2aa8b1385bf865b30de51b7ff3951e729bf1dcd Mon Sep 17 00:00:00 2001 From: Hao Chen Date: Sun, 28 Mar 2021 14:27:37 +0800 Subject: [PATCH] New Problem Solution -"Minimum Number of Operations to Reinitialize a Permutation" --- README.md | 1 + ...OfOperationsToReinitializeAPermutation.cpp | 77 +++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 algorithms/cpp/minimumNumberOfOperationsToReinitializeAPermutation/MinimumNumberOfOperationsToReinitializeAPermutation.cpp diff --git a/README.md b/README.md index d10d0e606..2cd275b4d 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ LeetCode | # | Title | Solution | Difficulty | |---| ----- | -------- | ---------- | +|1806|[Minimum Number of Operations to Reinitialize a Permutation](https://leetcode.com/problems/minimum-number-of-operations-to-reinitialize-a-permutation/) | [C++](./algorithms/cpp/minimumNumberOfOperationsToReinitializeAPermutation/MinimumNumberOfOperationsToReinitializeAPermutation.cpp)|Medium| |1805|[Number of Different Integers in a String](https://leetcode.com/problems/number-of-different-integers-in-a-string/) | [C++](./algorithms/cpp/numberOfDifferentIntegersInAString/NumberOfDifferentIntegersInAString.cpp)|Easy| |1803|[Count Pairs With XOR in a Range](https://leetcode.com/problems/count-pairs-with-xor-in-a-range/) | [C++](./algorithms/cpp/countPairsWithXorInARange/CountPairsWithXorInARange.cpp)|Hard| |1802|[Maximum Value at a Given Index in a Bounded Array](https://leetcode.com/problems/maximum-value-at-a-given-index-in-a-bounded-array/) | [C++](./algorithms/cpp/maximumValueAtAGivenIndexInABoundedArray/MaximumValueAtAGivenIndexInABoundedArray.cpp)|Medium| diff --git a/algorithms/cpp/minimumNumberOfOperationsToReinitializeAPermutation/MinimumNumberOfOperationsToReinitializeAPermutation.cpp b/algorithms/cpp/minimumNumberOfOperationsToReinitializeAPermutation/MinimumNumberOfOperationsToReinitializeAPermutation.cpp new file mode 100644 index 000000000..31b38b55e --- /dev/null +++ b/algorithms/cpp/minimumNumberOfOperationsToReinitializeAPermutation/MinimumNumberOfOperationsToReinitializeAPermutation.cpp @@ -0,0 +1,77 @@ +// Source : https://leetcode.com/problems/minimum-number-of-operations-to-reinitialize-a-permutation/ +// Author : Hao Chen +// Date : 2021-03-28 + +/***************************************************************************************************** + * + * You are given an even integer n. You initially have a permutation perm of size n where + * perm[i] == i (0-indexed). + * + * In one operation, you will create a new array arr, and for each i: + * + * If i % 2 == 0, then arr[i] = perm[i / 2]. + * If i % 2 == 1, then arr[i] = perm[n / 2 + (i - 1) / 2]. + * + * You will then assign arr to perm. + * + * Return the minimum non-zero number of operations you need to perform on perm to return the + * permutation to its initial value. + * + * Example 1: + * + * Input: n = 2 + * Output: 1 + * Explanation: prem = [0,1] initially. + * After the 1^st operation, prem = [0,1] + * So it takes only 1 operation. + * + * Example 2: + * + * Input: n = 4 + * Output: 2 + * Explanation: prem = [0,1,2,3] initially. + * After the 1^st operation, prem = [0,2,1,3] + * After the 2^nd operation, prem = [0,1,2,3] + * So it takes only 2 operations. + * + * Example 3: + * + * Input: n = 6 + * Output: 4 + * + * Constraints: + * + * 2 <= n <= 1000 + * n is even. + ******************************************************************************************************/ + +class Solution { +private: + bool check(vector& a) { + for(int i=0; i perm(n); + vector arr(n); + for(int i=0; i