問題
リストの最初と最後の要素を入れ替えたコピーを返してください。要素数が2未満のリストはそのまま返します。
swap_first_last(items) を実装してください。
入力
items: 整数のリスト。
出力
両端を入れ替えたリストを返してください。
制約
0 ≤ 長さ ≤ 100,000
例
例 1
入力:
items = [1, 2, 3, 4]
期待される出力:
expected = [4, 2, 3, 1]
入力:
std::vector<long long> items = {1, 2, 3, 4};
期待される出力:
std::vector<long long> expected = {4, 2, 3, 1};
入力:
long[] items = new long[] {1, 2, 3, 4};
期待される出力:
long[] expected = new long[] {4, 2, 3, 1};
解説
1と4が入れ替わります: [4, 2, 3, 1]。
例 2
入力:
items = [9]
期待される出力:
expected = [9]
入力:
std::vector<long long> items = {9};
期待される出力:
std::vector<long long> expected = {9};
入力:
long[] items = new long[] {9};
期待される出力:
long[] expected = new long[] {9};
解説
要素が1つだけなので入れ替えるものがありません: [9]。
解き方のヒント
まずは自分で考えてから、ヒントを 1 つずつ開いてみましょう。
ヒント 1
変えるのは両端だけで、中央はそのままです。
ヒント 2
中央部分を保ちつつ、最後の要素を先頭に、最初の要素を最後にして新しいリストを作ります。
ヒント 3
空リストと1要素のケースは、そのまま返すことを忘れないでください。
目安の計算量
時間 O(n)、追加メモリ O(n)
参考資料
この課題はCodeUtility用に調整されています。上記の説明と制約に従ってください。