題目描述:
給定一個長度為 n 的整數陣列 nums,建立一個長度為 2n 的陣列 ans,其中 ans[i] = nums[i] 且 ans[i + n] = nums[i](即把 nums 接在自己後面)。
解題思路:
直接建立新陣列,前半部分複製 nums,後半部分再複製一次 nums。或者用 STL 的 insert 一次完成。
時間複雜度:O(n) — 遍歷原陣列一次,每個元素做常數操作。
空間複雜度:O(n) — 結果陣列長度為 2n(不計入輸出空間則為 O(1))。
1. Create array ans of size 2n 2. For each index i from 0 to n-1: a. ans[i] = nums[i] b. ans[i + n] = nums[i] 3. Return ans
使用 STL insert O(n):vector<int> ans(nums); ans.insert(ans.end(), nums.begin(), nums.end()); 一行完成。底層仍是 O(n) 複製但更簡潔。
使用取模 O(n):建立長度 2n 的陣列,ans[i] = nums[i % n]。適用於需要循環存取的場景。