必須要new乙個dummy,而不是直接建立乙個listnode*,具體原因:
非常規的解法。這種思路只能通過60%的用例:
/**
* definition for a binary tree node.
* struct treenode
* };
*/class
solution
};
只需要加一句話:
swap
(root-
>left-
>right, root-
>right-
>right)
;
就是在每次判斷完之後,交換左子樹的右和右子樹的右,以上思路只能判斷是不是想等的,而不是對稱,若對稱,交換後就是相等的。
思路倒是不難,主要是邊界條件要處理好:不寫這句話就是錯誤……
if
(matrix.
size()
==0|| matrix[0]
.size()
==0);
}
錯在哪兒了呢,就是mins.size()==0,為了圖省事直接寫了mins.top()明顯是不對的
void
push
(int x)
else
}
一看用層次遍歷就比較方便,bfs,但是還是寫錯了,需要注意的是q.size()需要先儲存,因為如果你直接放在for迴圈內,q會因為push而增加長度……
/**
* definition for a binary tree node.
* struct treenode
* };
*/class
solution
else
while
(!q.
empty()
) ans.
push_back
(res);}
return ans;}}
;
小根堆,只輸出前n個即可:
class
solution
; vector<
int> res;
priority_queue<
int, vector<
int>
, less<
int>> q;
for(
int c:arr)
else}}
for(
int i =
0; i < q.
size()
; i++
)return res;}}
;
簡單的動態規劃,比較神奇的是:
這樣對於[1],輸出0,是錯的
class
solution
return m;}}
;
修改一下:nums.size()不減1立刻就成功了……原來是自己設定的判斷條件……
class
solution
return m;}}
;
注意返回空char就是:』 』
返回空字串就是「 」
class
solution
for(
auto c:s)
return
' ';}}
;
是p1==null嗎而不是p1->next
/**
* definition for singly-linked list.
* struct listnode
* };
*/class
solution
return p1;}}
;
「排序陣列中的搜尋問題,首先想到 二分法 解決。」
比較容易想到就是下標和內容不一樣,但是還有更簡單的做法,可以用類似於二分查詢的做法:
class
solution
return l;}}
;
怎麼說呢,還是對自己有自信吧,二叉搜尋樹的中序遍歷是順序排序的,本來覺得不是這麼做,一看解析就是這個方法……
/**
* definition for a binary tree node.
* struct treenode
* };
*/class
solution
return ans;
}void
dfs(treenode* root)}}
;
這種方法比較笨,聰明的是在遍歷的時候就計數,k–了就直接return:
/**
* definition for a binary tree node.
* struct treenode
* };
*/class
solution
void
dfs(treenode* root)
dfs(root-
>left);}}};
先計算出左右子樹高度,再看看是不是大於1,最後自己遞迴:
/**
* definition for a binary tree node.
* struct treenode
* };
*/class
solution
intdfs
(treenode* root)
};
《劍指Offer》第二版之陣列中重複的數字(二)
目錄 題目 在乙個長度為n的陣列裡的所有數字都在0 n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是重複的數字2或者3。思路 從頭到尾依次掃瞄這個陣列中的每個數字。當掃瞄到下標...
劍指offer第二版 面試題6(java)
面試題6 從尾到頭列印鍊錶 題目 輸入乙個鍊錶的頭結點,從尾到頭反過來列印出每個結點的值 鍊錶的結點定義如下 public class listnode 注意 面試中,如果打算修改輸入的資料,最好先問好是否資料是允許修改的 思路 1.遍歷順序從頭到尾,列印順序從尾到頭,第乙個結點最開始被訪問,但是最...
劍指offer第二版 面試題8 java
題目描述 給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標 分析 情況 一 有右子樹,這時只需要把其右孩子作為下乙個遍歷的 並不是要找的 節點,然後沿著該節點的左子樹 如果有的話 出發,直到遇到葉子節點,那麼該葉子節...