From 32f31bd953c9d06abb3cd4518c3d512458178c71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Borba?= Date: Sat, 19 Sep 2026 09:29:02 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=9F=A2=20Port=20problem=201920=20(Build?= =?UTF-8?q?=20Array=20from=20Permutation)=20from=20Swift=20to=20C++23?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replaces swift/1930.swift with solutions/1901-2000/1920-build-array-from-permutation/. The file was misnamed: its buildArray(nums) => nums[nums[i]] logic is LeetCode 1920 "Build Array from Permutation", not 1930 ("Unique Length-3 Palindromic Subsequences", an unrelated problem). Filed under the number that matches the actual algorithm. --- .../README.md | 11 +++++++++++ .../solution.cpp | 18 ++++++++++++++++++ .../solution.hpp | 10 ++++++++++ .../1920-build-array-from-permutation/test.cpp | 8 ++++++++ swift/1930.swift | 15 --------------- 5 files changed, 47 insertions(+), 15 deletions(-) create mode 100644 solutions/1901-2000/1920-build-array-from-permutation/README.md create mode 100644 solutions/1901-2000/1920-build-array-from-permutation/solution.cpp create mode 100644 solutions/1901-2000/1920-build-array-from-permutation/solution.hpp create mode 100644 solutions/1901-2000/1920-build-array-from-permutation/test.cpp delete mode 100644 swift/1930.swift diff --git a/solutions/1901-2000/1920-build-array-from-permutation/README.md b/solutions/1901-2000/1920-build-array-from-permutation/README.md new file mode 100644 index 0000000..3654092 --- /dev/null +++ b/solutions/1901-2000/1920-build-array-from-permutation/README.md @@ -0,0 +1,11 @@ +# 1920. Build Array from Permutation + +[LeetCode problem 1920](https://leetcode.com/problems/build-array-from-permutation/) + +- **Difficulty**: Easy +- **Tags**: array, simulation + +## Description + +Given a zero-indexed permutation `nums`, build an array `ans` where +`ans[i] == nums[nums[i]]` for every `i`. diff --git a/solutions/1901-2000/1920-build-array-from-permutation/solution.cpp b/solutions/1901-2000/1920-build-array-from-permutation/solution.cpp new file mode 100644 index 0000000..ce052b4 --- /dev/null +++ b/solutions/1901-2000/1920-build-array-from-permutation/solution.cpp @@ -0,0 +1,18 @@ +#include "solution.hpp" + +#include + +namespace leetcode::p1920 { + +std::vector solve(const std::vector& nums) { + std::vector result; + result.reserve(nums.size()); + + for (int i = 0; i < std::ssize(nums); ++i) { + result.push_back(nums.at(static_cast(nums.at(static_cast(i))))); + } + + return result; +} + +} // namespace leetcode::p1920 diff --git a/solutions/1901-2000/1920-build-array-from-permutation/solution.hpp b/solutions/1901-2000/1920-build-array-from-permutation/solution.hpp new file mode 100644 index 0000000..b00541c --- /dev/null +++ b/solutions/1901-2000/1920-build-array-from-permutation/solution.hpp @@ -0,0 +1,10 @@ +#pragma once + +#include + +namespace leetcode::p1920 { + +// optimized: O(n) time, O(n) space — direct lookup, nums[nums[i]]. +std::vector solve(const std::vector& nums); + +} // namespace leetcode::p1920 diff --git a/solutions/1901-2000/1920-build-array-from-permutation/test.cpp b/solutions/1901-2000/1920-build-array-from-permutation/test.cpp new file mode 100644 index 0000000..7939569 --- /dev/null +++ b/solutions/1901-2000/1920-build-array-from-permutation/test.cpp @@ -0,0 +1,8 @@ +#include + +#include "solution.hpp" + +TEST_CASE("Problem 1920", "[p1920]") { + CHECK(leetcode::p1920::solve({0, 2, 1, 5, 3, 4}) == std::vector{0, 1, 2, 4, 5, 3}); + CHECK(leetcode::p1920::solve({5, 0, 1, 2, 3, 4}) == std::vector{4, 5, 0, 1, 2, 3}); +} diff --git a/swift/1930.swift b/swift/1930.swift deleted file mode 100644 index a4d3c38..0000000 --- a/swift/1930.swift +++ /dev/null @@ -1,15 +0,0 @@ -func buildArray(_ nums: [Int]) -> [Int] { - var result: [Int] = [] - - for i in 0..