基本思路:不開闢新的陣列空間的情況下考慮在原屬組上進行操作
將陣列倒置,這樣後k個元素就跑到了陣列的前面,然後反轉一下即可
同理後 len-k個元素只需要翻轉就完成陣列的k次移動
public
class
arraykshift
k = k % array.length;if(
0> k)
/** * reverse array , e.g: [1, 2, 3 ,4] to [4,3,2,1]
*/for(
int i =
0; i < array.length /
2; i++
)/**
* first k element reverse
*/for(
int i =
0; i < k /
2; i++
)/**
* last length - k element reverse
*/for(
int i = k; i < k +
(array.length - k )/2
; i ++)}
public
static
void
main
(string[
] args)
; arraykshift shift =
newarraykshift()
; shift.
arraykshift
(array,6)
; arrays.
stream
(array)
.foreach
(o -
>);
}}
資料結構 線性表 陣列 迴圈右移k位
如以下結果 表a中的原始資料是 1,2,3,4,5,6 若k 2 則表a的最終資料是 5,6,1,2,3,4 線性表在處理的時候,按照陣列的形式的進行處理,因此此處用陣列的格式實現。首先先右移動一位,即最後乙個數會被覆蓋,因此先記錄下最後乙個數。這樣迴圈k次就可以了,如下 include int m...
資料結構和演算法之稀疏陣列
五子棋程式,只有兩種顏色的子,連成五個就gameover。可能乙個棋盤能放下100枚棋子,但是總占用空間只有不到10個,遊戲就over了。那麼這樣儲存到本地file的話,空間是極大的浪費的。這就引出了稀疏陣列。當乙個陣列中大部分元素都是0 或是同乙個值 的時候,就可以用稀疏陣列來儲存此陣列。先有個原...
資料結構和演算法學習 資料結構之稀疏陣列
編寫的五子棋程式中,有存檔退出和續上盤的功能。問題分析 因為該二維陣列的很多值是預設值 0,因此記錄了很多沒有意義的資料 稀疏陣列 當乙個陣列中大部分元素為 或者為同乙個值的陣列時,可以使用稀疏陣列來儲存該陣列。稀疏陣列的處理方法 稀疏陣列舉例說明 整體思路分析 將二維陣列 轉 稀疏陣列 1.先遍歷...