题目地址:
https://leetcode.com/problems/create-target-array-in-the-given-order/
给定两个数组 A A A和 B B B,要求模拟一个过程,开一个新数组,然后每一步将 A [ i ] A[i] A[i]插入到新数组的下标 B [ i ] B[i] B[i]的位置上。返回新数组。
代码如下:
public class Solution {
private int[] res;
// 新数组长度
private int len;
public int[] createTargetArray(int[] nums, int[] index) {
res = new int[nums.length];
for (int i = 0; i < nums.length; i++) {
insert(index[i], nums[i]);
}
return res;
}
private void insert(int idx, int x) {
if (idx == len) {
res[len++] = x;
return;
}
for (int i = len - 1; i >= idx; i--) {
res[i + 1] = res[i];
}
res[idx] = x;
len++;
}
}
时间复杂度 O ( n ) O(n) O(n),空间 O ( 1 ) O(1) O(1)。