更多內容關注個人部落格:lemonlyue.github.io/
題目
難度:簡單
語言: PHP
題目內容:
給你兩個整數陣列 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]
解題
LeetCode給定函式體
class Solution {
/**
* @param Integer[] $nums
* @param Integer[] $index
* @return Integer[]
*/
function createTargetArray($nums, $index) {
}
}
思路
判斷當前陣列位置是否有值, 有值則將值往後移(遞迴思想), 沒有值則插入
class Solution {
/**
* @desc 遞迴方法
* @param Integer[] $nums
* @param Integer[] $index
* @return Integer[]
*/
public $arr = [];
function createTargetArray($nums, $index) {
foreach ($index as $key => $item) {
$this->insert($item, $nums[$key]);
}
return $this->$arr;
}
/**
* @desc 插入方法, 判斷當前陣列位置是否有值, 有值則將值往後移, 沒有值則插入
* @param int $index
* @param int $num
*/
function insert($index, $num) {
if (!isset($this->$arr[$index])) {
$this->$arr[$index] = $num;
} else {
$temp = $this->$arr[$index];
$this->insert($index + 1, $temp);
$this->$arr[$index] = $num;
}
}
}
結果
使用遞迴方法,雖然說可以實現,但是耗時較長。有更好的解法可以在評論留言。
LeetCode其他題解
檢視其他大佬分享題解,程式碼如下:
class Solution {
/**
* @param Integer[] $nums
* @param Integer[] $index
* @return Integer[]
*/
function createTargetArray($nums, $index) {
$target = [];
$_tmp_indexs = [];
foreach ($index as $i => $k) {
if (in_array($k, $_tmp_indexs)) {
foreach ($_tmp_indexs as &$_tmp_index) {
if ($_tmp_index >= $k) {
$_tmp_index ++;
}
}
}
$_tmp_indexs[] = $k;
}
foreach ($_tmp_indexs as $i => $k) {
$target[$k] = $nums[$i];
}
ksort($target);
return $target;
}
}
思路如下:
將index陣列中的每一項遍歷, 判斷在插入後實際對應的下標位置得到($_tmp_index), 然後通過該對映寫入到結果中。
執行結果如下:
本作品採用《CC 協議》,轉載必須註明作者和本文連結