diff --git a/problems/create-target-array-in-the-given-order/create_target_array_in_the_given_order.go b/problems/create-target-array-in-the-given-order/create_target_array_in_the_given_order.go new file mode 100644 index 000000000..cf70a3f4a --- /dev/null +++ b/problems/create-target-array-in-the-given-order/create_target_array_in_the_given_order.go @@ -0,0 +1,10 @@ +package problem1389 + +func createTargetArray(nums []int, index []int) []int { + ans := make([]int, len(nums)) + for i, idx := range index { + copy(ans[idx+1:], ans[idx:]) + ans[idx] = nums[i] + } + return ans +} diff --git a/problems/create-target-array-in-the-given-order/create_target_array_in_the_given_order_test.go b/problems/create-target-array-in-the-given-order/create_target_array_in_the_given_order_test.go new file mode 100644 index 000000000..8fa361251 --- /dev/null +++ b/problems/create-target-array-in-the-given-order/create_target_array_in_the_given_order_test.go @@ -0,0 +1,38 @@ +package problem1389 + +import ( + "reflect" + "testing" +) + +type testType struct { + in []int + index []int + want []int +} + +func TestCreateTargetArray(t *testing.T) { + tests := [...]testType{ + { + in: []int{0, 1, 2, 3, 4}, + index: []int{0, 1, 2, 2, 1}, + want: []int{0, 4, 1, 3, 2}, + }, + { + in: []int{1, 2, 3, 4, 0}, + index: []int{0, 1, 2, 3, 0}, + want: []int{0, 1, 2, 3, 4}, + }, + { + in: []int{1}, + index: []int{0}, + want: []int{1}, + }, + } + for _, tt := range tests { + got := createTargetArray(tt.in, tt.index) + if !reflect.DeepEqual(got, tt.want) { + t.Fatalf("in: %v, got: %v, want: %v", tt.in, got, tt.want) + } + } +}