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

概要

題目來源鏈接:https://leetcode-cn.com/problems/create-target-array-in-the-given-order/

難度:簡單

類型:數組

題目

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

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

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

示例

示例 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 <= nums.length, index.length <= 100
nums.length == index.length
0 <= nums[i] <= 100
0 <= index[i] <= i

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/create-target-array-in-the-given-order
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。

分析

將要插入的元素的索引即index[i]與nums數組的下標相比較,如果index[i]等於nums數組的下標則意味着該位置是空的,沒有元素插入,可以直接進行插入元素,如果不等於的話意味着該處位置已經有元素了,按照題意,需要將元素及後面的元素向後挪動一個位置,然後將空出來的這個插入元素。

代碼

Java代碼

    /**
     * 按既定順序創建目標數組
     *
     * @param nums  數組
     * @param index 索引數組
     * @return 返回目標數組
     */
    public int[] createTargetArray(int[] nums, int[] index) {
        // 創建一個目標數組
        int[] target = new int[nums.length];
        for (int i = 0; i < nums.length; i++) {// 循環遍歷nums數組的所有元素
            if (i != index[i]) {// 注意:如果nums[i]元素的下標不等於index[i]中的值,那麼必然是有元素佔了已有下標的元素位置,所以需要將該下標後面的元素都向後移動一位
                for (int j = target.length - 1; j > index[i]; j--) {// 將元素向後移動一個位置
                    target[j] = target[j - 1];
                }
                target[index[i]] = nums[i];// 然後纔將空下來的位置置爲nums[i]的元素
            } else {// 如果不相等,意味着該處位置還沒有放入元素,可以直接放入元素
                target[index[i]] = nums[i];
            }
        }
        return target;
    }

 

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