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...