每日劍指offer,感謝為了秋招努力的自己

2021-10-23 09:14:27 字數 1543 閱讀 7044

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

第一遍自己的憨憨解法:找陣列存偶數 然後拼接

class

solution

else

}for

(int i=

0;isize()

;i++)}

};

空間複雜度優化:

借用插排思想:

i=j=0;

1.j向後遍歷,偶數++,奇數插到i的位置,ij範圍內所有數字向後移動

class

solution

array[start]

=c; start++;}

}}};

優化**錯誤點:

迴圈中不用判斷偶數,自然增加

14.輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點.

class

solution

else

}while

(fast)

return slow;}}

;

快慢指標 注意k的大小就行了;

15.反轉鍊錶

class

solution

return pre;}}

;

必會,面試常客。

16.輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。

class

solution

else

head=head-

>next;

} head-

>next=phead1==

nullptr

?phead2:phead1;

return p-

>next;}}

;

17.二叉樹的子結構,約定空樹不為任何樹子結構:

bool

hassubtree

(treenode* proot1, treenode* proot2)

bool

same

(treenode* root1,treenode* root2)

return

same

(root1-

>left,root2-

>left)

&&same

(root1-

>right,root2-

>right)

;//左右比較

}

if

(root2==

null

)return

true;if

(root1==

null

)return

false

;

每日程式設計(32) 劍指offer

題目描述 輸入乙個鍊錶,按煉錶值從尾到頭的順序返回乙個arraylist。分析 很經典的一道題,方法也有很多,借助乙個切片儲存鍊錶的值再更改的切片的順序 遞迴遍歷鍊錶,直到最後乙個鍊錶返回輸出 func printlinlist node listnode int if node nil cur n...

劍指Offer每日一題09

輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的節點仍然是遞增排序的。示例 輸入 1 2 5 null 2 4 7 null 輸出 1 2 2 4 5 7 null限制 0 鍊錶長度 1000 方法一 正常哨兵結點求解 class solution else prev prev.next 迴圈結...

劍指Offer每日一題08

定義乙個函式,輸入乙個鍊錶的頭節點,反轉該鍊錶並輸出反轉後鍊錶的頭節點。示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null 限制 0 節點個數 5000 方法一 日常雙指標,好用不要錢public class listnode public listnode reverse...