From 32d904c9eaf4e32e7c78b21e9515161506248767 Mon Sep 17 00:00:00 2001 From: Shuo Date: Wed, 8 Apr 2020 10:00:15 +0800 Subject: [PATCH] A: Create Target Array in the Given Order --- .../create_target_array_in_the_given_order.go | 10 +++++ ...te_target_array_in_the_given_order_test.go | 38 +++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 problems/create-target-array-in-the-given-order/create_target_array_in_the_given_order.go create mode 100644 problems/create-target-array-in-the-given-order/create_target_array_in_the_given_order_test.go 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) + } + } +}