資料結構和演算法之陣列右移K

2021-09-29 01:58:07 字數 930 閱讀 4241

基本思路:不開闢新的陣列空間的情況下考慮在原屬組上進行操作

將陣列倒置,這樣後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.先遍歷...