Problem#
給你一個陣列 nums
有 2n
個元素 [x1, x2, ..., xn, y1, y2, ..., yn]
要你回傳 [x1, y1, x2, y2, ..., xn, yn]
- 測資限制:
- $1 \le n \le 500$
- $1 \le nums[i] \le 10^3$
想法#
直覺做法: 開陣列掃一次 0~n,依序 push nums[i]
和 nums[n+i]
in-place: 因為不能開陣列,而且好像沒辦法 swap 的做完(至少我想不到),所以要想辦法把一半的數字先存起來,注意這題這題的值域最大 1000 而已,binary 只佔 10 個 bit,int 可以塞進三個,所以想法就是先把一半的數字 [0, n)
encode 進另一半的數字 [n, 2*n)
- 時間複雜度: $\mathcal{O}(n)$
- 空間複雜度: 直覺做法 $\mathcal{O}(n)$, in-place $\mathcal{O}(1)$
AC Code#
- 直覺做法
- in-place
心得#
in-place 作法看題解QAQ