劍指Offer 陣列 (3)

2021-09-02 15:02:33 字數 1120 閱讀 1908

知識點/資料結構:陣列

題目描述

輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。

1:自己寫的**,借助了其他的記憶體空間

奇數和奇數 偶數和偶數相對位置不變 指的是奇數之間的先後順序不變,偶數也是。

自己的做法是把奇數挑選出來 ,放在乙個新的陣列裡邊;把偶數挑選出來。放在乙個新的陣列裡邊。最後把兩個資訊的陣列覆寫帶原來的陣列裡邊。但是自己的**太長了 不簡潔。

public class solution {

public void reorderarray(int array) {

int count1=0; int count2=0;

for(int i=0;i2:用了兩個迴圈巢狀進行了遍歷陣列,時間複雜度為還是n(n^2),可以考慮用右移運算子代替取餘運算

public class solution{

public void reorderarray(int array){

for(int i=0;i較為簡潔的思路(不滿足相對位置不變,下面的解法是發生變化的):我們可以維護兩個指標,第乙個指標初始化時指向陣列的第乙個數字,它只向後移動;第二個指標初始化時指向陣列的最後乙個數字,它只向前移動。在兩個指標相遇之前,第乙個指標總是位於第二個指標的前面。如果第乙個數字指向的數字是偶數,並且第二個數字指向的數字是奇數,則交換兩個數字。

public class solution{

public void reorderarray(int array){

int a=0;

int b=array.length-1;

while(a執行結果如下:

您的**已儲存

答案錯誤:您提交的程式沒有通過所有的測試用例

case通過率為0.00%

測試用例:

[1,2,3,4,5,6,7]

對應輸出應該為:

[1,3,5,7,2,4,6]

你的輸出為:

[1,7,3,5,4,6,2]

劍指offer 陣列

資料是最簡單的資料結構,它佔據一塊連續的記憶體並按照順序儲存資料。建立陣列時,首先指點陣列的容量大小,然後根據大小分配記憶體。缺點 空間效率不高。經常有空閒的區域滅有得到充分利用。優點 時間效率很高。可以根據時間效率高的特點,來實現簡單的雜湊表 把陣列的下標設為雜湊表的鍵值,陣列中的每乙個數字設為雜...

劍指offer 陣列

public class 03 陣列中的重複數字 swap number,number i i return 1 交換 public void swap int number,int i,int j public class 03 陣列中的重複數字 return 1 public intfindre...

劍指offer 陣列

問題描述 在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。function find target,array return false 問題描述 在乙個長度...