思路分析
解法一:用链表实现,依次执行插入操作。
解法二:模拟动态数组的插入过程,计算出每个数最终的index,然后遍历赋值。相比真正的动态数组插入操作减少了内存分配回收和移动的过程。
代码实现
解法一
class Solution {public int[] createTargetArray(int[] nums, int[] index) {LinkedList<Integer> target = new LinkedList<Integer>();for (int i = 0; i < nums.length; ++i) {target.add(index[i], nums[i]);}int[] ans = new int[nums.length];for (int i = 0; i < nums.length; ++i) {ans[i] = target.get(i);}return ans;}}
解法二
class Solution {public int[] createTargetArray(int[] nums, int[] index) {int[] ans = new int[nums.length];for (int i = 0; i < nums.length; ++i){for (int j = 0; j < i; ++j){if (index[i] <= index[j]){index[j]++;}}}for (int i = 0; i < nums.length; ++i){ans[index[i]] = nums[i];}return ans;}}
