
力扣-剑指offer-中等题
神山极客
C++入门
展开
-
重建二叉树
力扣地址递归:利用二叉树的特性,先序遍历的先遍历父节点,再遍历左子树,再遍历右子树,中序遍历,是先遍历左子树,再遍历头结点,再遍历右子树,如此先序遍历的数组的第一个数字,就是中序遍历数组的中间某个数字,并且这个数字将中序遍历数组一分为二,左边为左子树,右边为右子树,如此,我们只需要一个 hash map 存储中序遍历数组的每一个值的下标,就可以快速定位中序遍历数组的父节点位置,快速区分左右子树/** * Definition for a binary tree node. *原创 2021-03-11 23:21:57 · 124 阅读 · 0 评论 -
二维数组中的查找
力扣地址线性查找:从数组的右上角开始查找,数组当前值比 target 大则下标左移,数组当前值比 target 小则下标下移,如此就能找到 target ,或者跳出循环class Solution {public: bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) { if (!matrix.size() || !matrix[0].size()) {原创 2021-03-10 22:55:08 · 96 阅读 · 0 评论 -
字符串的排列
力扣地址回溯 + set集合:选择一个位置的字符后向后互换,遇到相同的字符直接跳过,通过 set 判断字符是否相同,递归到最后一个字符则成为一个字符串class Solution {public: vector<string> permutation(string s) { dfs(s, 0); return res; } void dfs(string& s, int index) { if (i原创 2021-03-09 21:47:52 · 126 阅读 · 0 评论