題目一:矩陣轉置
給定乙個矩陣a
, 返回a
的轉置矩陣。
矩陣的轉置是指將矩陣的主對角線翻轉,交換矩陣的行索引與列索引。
示例 1:
輸入:[[1,2,3],[4,5,6],[7,8,9]]示例 2:輸出:[[1,4,7],[2,5,8],[3,6,9]]
輸入:[[1,2,3],[4,5,6]]思路:比較簡單,但要注意對矩陣的初始化,如果不初始化會報錯--》reference binding to null pointer of type 'struct value_type'輸出:[[1,4],[2,5],[3,6]]
class題目二:solution
vector
int>> ar(a[0
].size());
for (int i = 0; i < ar.size(); i++) ar[i].resize(a.size());
for (int i = 0; i0].size(); i++)
}return
ar ;}};
給定乙個根為root
的二叉樹,每個結點的深度是它到根的最短距離。
如果結點具有最大深度,則該結點是最深的。
返回具有最大深度的結點,以該結點為根的子樹中包含所有最深的結點。
輸入:[3,5,1,6,2,0,8,null,null,7,4]輸出:[2,7,4]
解釋:
我們返回值為 2 的結點,在圖中用黃色標記。在圖中用藍色標記的是樹的最深的結點。
輸入 "[3, 5, 1, 6, 2, 0, 8, null, null, 7, 4]" 是對給定的樹的序列化表述。
輸出 "[2, 7, 4]" 是對根結點的值為 2 的子樹的序列化表述。
輸入和輸出都具有 treenode 型別。
思路:這個題要注意的是,不是返回乙個最深的節點,而是返回乙個包含所有最深的子樹,也就是如果是一顆滿二叉樹,那麼就返回跟節點。然後就只要判斷左右兩個孩子哪個節點更深,就返回哪個,如果一樣深就返回當前根節點
/*題目三:重構二叉樹* * definition for a binary tree node.
* struct treenode
* }; */
class
solution
int depofl = getlen(root->left) ;
int depofr = getlen(root->right) ;
if(depofl==depofr)
if(depofl>depofr)
else
}int getlen(treenode*root)
return
1+max(getlen(root->left),getlen(root->right)) ;
}treenode* subtreewithalldeepest(treenode*root)
};
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。
思路:這個題就是對照兩種序列把序列分段然後遞迴,遞迴左右子樹的時候記得要記錄每一次遞迴時兩種序列的開始和結束位置
/*** definition for a binary tree node.
* struct treenode
* };
*/class solution
}return null ;
}treenode* buildtree(vector& preorder, vector& inorder)
return build(preorder,0,len-1,inorder,0,len-1) ;}};
刷題 力扣 867 轉置矩陣
題目鏈結 題目描述 給你乙個二維整數陣列 matrix,返回 matrix 的 轉置矩陣 矩陣的 轉置 是指將矩陣的主對角線翻轉,交換矩陣的行索引與列索引。示例 1 輸入 matrix 1,2,3 4,5,6 7,8,9 輸出 1,4,7 2,5,8 3,6,9 示例 2 輸入 matrix 1,2...
C 矩陣轉置
看了很多網山有關矩陣轉置的 大部分還用了中間變數,本人親測矩陣轉置 無誤,望對廣大c 初學者有所幫助!題目如下 寫乙個函式,使給定的乙個二維陣列 3x3 轉置,即行列互換。input 乙個3 3的矩陣 output 轉置後的矩陣 每兩個數字之間均有乙個空格 sample input 1 2 3 4 ...
每日刷題 矩陣置零
給定乙個 m x n 的矩陣,如果乙個元素為 0,則將其所在行和列的所有元素都設為 0。請使用原地演算法。示例 例 1 輸入 1,1,1 1,0,1 1,1,1 輸出 1,0,1 0,0,0 1,0,1 例 2 輸入 0,1,2,0 3,4,5,2 1,3,1,5 輸出 0,0,0,0 0,4,5,...