偶然在一本書上看到這樣一道題覺得聽一意思的就拿來做了一下,題目是這樣設定的
在已知一維陣列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,分別表示三個...