样例 1：

 输入：
nums = [0,2,1,5,3,4]

[0,1,2,4,5,3]

数组 ans 构建如下：
ans = [nums[nums[0]], nums[nums[1]], nums[nums[2]], nums[nums[3]], nums[nums[4]], nums[nums[5]]]
= [nums[0], nums[2], nums[1], nums[5], nums[3], nums[4]]
= [0,1,2,4,5,3]


样例 2：

输入：
nums = [5,0,1,2,3,4]

[4,5,0,1,2,3]

数组 ans 构建如下：
ans = [nums[nums[0]], nums[nums[1]], nums[nums[2]], nums[nums[3]], nums[nums[4]], nums[nums[5]]]
= [nums[5], nums[0], nums[1], nums[2], nums[3], nums[4]]
= [4,5,0,1,2,3]


提示：

• 1 <= nums.length <= 1000
• 0 <= nums[i] < nums.length
• nums 中的元素 互不相同

题解

java

class Solution {
public int[] buildArray(int[] nums) {
final int n = nums.length;

int[] ans = new int[n];

for (int i = 0; i < n; ++i) {
ans[i] = nums[nums[i]];
}

return ans;
}
}

class Solution {
public int[] buildArray(int[] nums) {
final int n         = nums.length;
final int highValue = 1000;

// 将结果值附加到数组
for (int i = 0; i < n; ++i) {
// 将原值+结果
// 一个值同时存储了原值和结果值
nums[i] += highValue * (nums[nums[i]] % highValue);
}

// 将原值剔除，仅保留结果
for (int i = 0; i < n; ++i) {
nums[i] /= highValue;
}

return nums;
}
}

c

/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* buildArray(int* nums, int numsSize, int* returnSize){
const int highValue = 1000;

for (int i = 0; i < numsSize; ++i) {
nums[i] += highValue * (nums[nums[i]] % highValue);
}

for (int i = 0; i < numsSize; ++i) {
nums[i] /= highValue;
}

*returnSize = numsSize;

return nums;
}

c++

class Solution {
public:
vector<int> buildArray(vector<int>& nums) {
const int highValue = 1000;
int n = nums.size();

for (int i = 0; i < n; ++i) {
nums[i] += highValue * (nums[nums[i]] % highValue);
}

for (int i = 0; i < n; ++i) {
nums[i] /= highValue;
}

return nums;
}
};

python

from typing import List

class Solution:
def buildArray(self, nums: List[int]) -> List[int]:
highValue = 1000
n = len(nums)
for i in range(n):
nums[i] += highValue * (nums[nums[i]] % highValue)
for i in range(n):
nums[i] //= highValue
return nums

go

func buildArray(nums []int) []int {
highValue := 1000
n := len(nums)

for i := 0; i < n; i++ {
nums[i] += highValue * (nums[nums[i]] % highValue)
}

for i := 0; i < n; i++ {
nums[i] /= highValue
}

return nums;
}

rust

impl Solution {
pub fn build_array(nums: Vec<i32>) -> Vec<i32> {
let mut nums = nums;

let high_value = 1000;
let n = nums.len();

for i in 0..n {
nums[i] += high_value * (nums[nums[i] as usize] % high_value);
}

for i in 0..n {
nums[i] /= high_value;
}

return nums;
}
}

原题传送门：https://leetcode-cn.com/problems/build-array-from-permutation/

|
6天前
|
SQL JavaScript 前端开发

18 6
|
11天前
|
Java API 开发者
【Java模块化新飞跃】JDK 22模块化增强：构建更灵活、更可维护的应用架构！
【9月更文挑战第9天】JDK 22的模块化增强为开发者构建更灵活、更可维护的应用架构提供了强有力的支持。通过模块化设计、精细的依赖管理和丰富的工具支持，开发者可以更加高效地开发和管理应用，提高应用的性能和可维护性。
44 10
|
6天前
|
NoSQL JavaScript Java
Java Python访问MongoDB
Java Python访问MongoDB
14 4
|
21天前
|

【8月更文挑战第29天】
24 8
|
21天前
|

【8月更文挑战第29天】
26 8
|
21天前
|

|
21天前
|

Python 数组和列表有什么区别？
【8月更文挑战第29天】
25 4
|
19天前
|
Rust 安全 开发者

【8月更文挑战第31天】随着互联网的发展，Web应用对性能和安全性要求不断提高。Rust凭借卓越的性能、内存安全及丰富生态，成为构建高性能Web服务器的理想选择。本文通过一个简单示例，展示如何使用Rust和Actix-web框架搭建基本Web服务器，从创建项目到运行服务器全程指导，帮助读者领略Rust在Web后端开发中的强大能力。通过实践，读者可以体验到Rust在性能和安全性方面的优势，以及其在Web开发领域的巨大潜力。
29 0
|
19天前
|

Xamarin 在教育应用开发中的应用：从课程笔记到互动测验，全面解析使用Xamarin.Forms构建多功能教育平台的技术细节与实战示例
【8月更文挑战第31天】Xamarin 作为一款强大的跨平台移动开发框架，在教育应用开发中展现了巨大潜力。它允许开发者使用单一的 C# 代码库构建 iOS、Android 和 Windows 应用，确保不同设备上的一致体验。Xamarin 提供广泛的 API 支持，便于访问摄像头、GPS 等原生功能。本文通过一个简单的教育应用示例——课程笔记和测验功能，展示了 Xamarin 在实际开发中的应用过程。从定义用户界面到实现保存笔记和检查答案的逻辑，Xamarin 展现了其在教育应用开发中的高效性和灵活性。
26 0
|
20天前
|
Rust Cloud Native 安全

【8月更文挑战第31天】《构建微服务：Rust 在云原生环境中的实践》探讨了 Rust 语言凭借其内存安全、高性能及可靠性等特性，在快速发展的云计算领域构建微服务的优势。书中介绍了选择合适框架（如 Axum 和 Tide）、容器化部署、服务间通信及确保服务可靠性等方面的内容，并展示了 Rust 在云原生环境中的广泛应用前景。
52 0