-
Notifications
You must be signed in to change notification settings - Fork 0
/
createTargetArrayInTheGivenOrder.js
74 lines (55 loc) · 1.87 KB
/
createTargetArrayInTheGivenOrder.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
// LeetCode #1389. Create Target Array in the Given Order
/* Instructions
Given two arrays of integers nums and index. Your task is to create target array under the following rules:
Initially target array is empty.
From left to right read nums[i] and index[i], insert at index index[i] the value nums[i] in target array.
Repeat the previous step until there are no elements to read in nums and index.
Return the target array.
It is guaranteed that the insertion operations will be valid.
Example 1:
Input: nums = [0,1,2,3,4], index = [0,1,2,2,1]
Output: [0,4,1,3,2]
Explanation:
nums index target
0 0 [0]
1 1 [0,1]
2 2 [0,1,2]
3 2 [0,1,3,2]
4 1 [0,4,1,3,2]
Example 2:
Input: nums = [1,2,3,4,0], index = [0,1,2,3,0]
Output: [0,1,2,3,4]
Explanation:
nums index target
1 0 [1]
2 1 [1,2]
3 2 [1,2,3]
4 3 [1,2,3,4]
0 0 [0,1,2,3,4]
Example 3:
Input: nums = [1], index = [0]
Output: [1]
Constraints:
1 <= nums.length, index.length <= 100
nums.length == index.length
0 <= nums[i] <= 100
0 <= index[i] <= i
*/
// Solution
const createTargetArray = function (nums, index) {
// instantiate empty array, target
let target = []
// loop through nums
for (let i = 0; i < nums.length; i++) {
// check if element at index already exists, if it does...
// add the element at nums index in that position and shift the other elements to the right
if (target[index[i]] !== undefined) {
target.splice(index[i], 0, nums[i])
} else {
// otherwise, set that index equal to the element at nums index
target[index[i]] = nums[i]
}
}
// return the filled out target array
return target
}