LeetCode 1389. 按既定順序創建目標數組

題目

1389. 按既定順序創建目標數組

描述

給你兩個整數數組 numsindex。你需要按照以下規則創建目標數組:

  • 目標數組 target 最初爲空。
  • 按從左到右的順序依次讀取 nums[i]index[i],在 target 數組中的下標 index[i] 處插入值 nums[i]
  • 重複上一步,直到在 numsindex 中都沒有要讀取的元素。

請你返回目標數組。

題目保證數字插入位置總是存在。

示例 1:

輸入: nums = [0,1,2,3,4], index = [0,1,2,2,1]
輸出:[0,4,1,3,2]
解釋:
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]

示例 2:

輸入: nums = [1,2,3,4,0], index = [0,1,2,3,0]
輸出: [0,1,2,3,4]
解釋:
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]

示例 3:

**輸入:**nums = [1], index = [0]
輸出:[1]

解題思路

  1. 因爲數組在不斷變化,所以新建一個列表list,作爲存儲不斷變化的“數組”;
  2. numsindex從左到右依次讀取,利用列表的add()方法,將下標 index[i] 處插入值 nums[i]
  3. 因爲最終返回值是int數組,所以新建一個int數組target
  4. list轉換爲target
  5. 返回target;

實現

package Array;

import java.util.ArrayList;

/**
 * Created with IntelliJ IDEA.
 * Version : 1.0
 * Author  : cunyu
 * Email   : [email protected]
 * Website : https://cunyu1943.github.io
 * Date    : 2020/3/26 10:55
 * Project : LeetCode
 * Package : Array
 * Class   : OneThreeEightNine
 * Desc    : 1389. 按既定順序創建目標數組
 */
public class OneThreeEightNine {
	public static void main(String[] args) throws Exception {
		OneThreeEightNine oneThreeEightNine = new OneThreeEightNine();
		int[] nums = {0, 1, 2, 3, 4};
		int[] index = {0, 1, 2, 2, 1};
		for (int item : oneThreeEightNine.createTargetArray(nums, index)
		) {
			System.out.println(item);
		}
	}

	public int[] createTargetArray(int[] nums, int[] index) {
		ArrayList<Integer> list = new ArrayList<>();
		for (int i = 0; i < nums.length;i++){
			list.add(index[i],nums[i]);
		}

		int[] target = new int[nums.length];
		for (int i = 0; i < list.size(); i++) {
			target[i] = list.get(i);
		}
		return target;
	}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章