共享陣列原地逆置

2021-08-14 15:14:04 字數 1098 閱讀 8906

偶然在一本書上看到這樣一道題覺得聽一意思的就拿來做了一下,題目是這樣設定的

在已知一維陣列a[m+n]中一次存放兩個線性表(a1,a2,a3,a4…am),(b1,b2,b3…bn),試寫出乙個函式將兩個順序表位置互換,即由(a,1,a2,a3,a4...am,b1,b2,b3...bn)轉換成(b1,b2,b3...bn,a,1,a2,a3,a4...am)要求空間複雜度為o(1)想必這種題會經常出現在面試題目中吧,哈哈,扯遠了,以下是我的答案,水平有限,如有紕漏還望各位大神不吝賜教。

乍一看題目還挺麻煩的,兩個陣列大小不一樣,原地逆置迴圈次數不容易控制,換個思路重新整理一下發現可以用一種很巧妙的方法分三步實現

第一步:將字母序列逆置

第二部:將數字序列逆置

第三部:將陣列整體逆置

其中逆置函式如下:

逆置函式需要兩個引數,分別為需要逆置的陣列起始位置[start]和終止位置[end];

public static void reverse(int start,int

end)

}

tip:char array=

測試陣列a[0-7],b[8-11]

測試結果如下:

完整**

public

class main ;

public

static

void

main(string args)

public

static

void

reverse(int start,int end)

}

我的文章列表email:[email protected]

陣列元素原地逆置

最簡單的利用陣列實現 includeusing namespace std const int arraysize 30 int main for int i 0 i 用結構體實現 include includeusing namespace std define listsize 30 函式狀態碼...

m n原地逆置

problem 乙個長度為m n的線性表,將後n個元素轉換到m個元素之前並輸出結果,要求最少時間複雜度 配置環境 visual studio 2019 enterprise define crt secure no warnings include include void swap int a,i...

單鏈表原地逆置

題目 是編寫演算法將帶一單鏈表逆置,要求空間複雜度為o 1 o 1 o 1 分析 單鏈表分為帶頭節點和不帶頭節點兩種,逆置思路有兩種,第一種是採用頭插法重新建立新的單鏈表,該方法直接遍歷鍊錶,每次將當前結點新增到新鍊錶的頭部 第二種是通過該錶 next指標,定義三個指標 pre,p,r,分別表示三個...