- 配列の最後の要素を一時的な変数に保存します。
- 配列の最後から2番目の要素から順に、それぞれの要素を直前の要素に上書きします。すなわち、
arr[i] = arr[i-1]
のようにします。 - 1番目の要素(先頭)に、保存しておいた最後の要素の値を代入します。すなわち、
arr[0] = temp
のようにします。
この手順を使って、配列内の要素を一つずつ右にシフトすることができます。以下に、Pythonでの実装例を示します。
def cyclically_rotate(arr):
temp = arr[-1] # 最後の要素を一時的な変数に保存
for i in range(len(arr)-2, -1, -1):
arr[i+1] = arr[i] # 要素を一つずつ右にシフト
arr[0] = temp # 先頭に最後の要素を代入
return arr
# 使用例
my_array = [1, 2, 3, 4, 5]
result = cyclically_rotate(my_array)
print(result) # 出力: [5, 1, 2, 3, 4]
このコードでは、関数 cyclically_rotate
が与えられた配列を一つずつ右にシフトし、シフト後の配列を返します。上記の使用例では、配列 [1, 2, 3, 4, 5]
をシフトした結果 [5, 1, 2, 3, 4]
が出力されます。
他にも、この問題を解くためのさまざまなアルゴリズムが存在します。例えば、要素を一時的な変数に保存せずに操作する方法や、反復回数を減らす最適化などがあります。必要に応じて、さまざまなアプローチを試してみてください。
このようにして、配列内の要素を一つずつ循環的にシフトする方法と、そのコード例について説明しました。ぜひ、実際に試してみてください。