力扣-剑指offer-中等题
神山极客
C++入门
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
重建二叉树
力扣地址 递归: 利用二叉树的特性,先序遍历的先遍历父节点,再遍历左子树,再遍历右子树, 中序遍历,是先遍历左子树,再遍历头结点,再遍历右子树,如此先序遍历的数组的第一个数字,就是中序遍历数组的中间某个数字, 并且这个数字将中序遍历数组一分为二,左边为左子树,右边为右子树,如此,我们只需要一个 hash map 存储中序遍历数组的每一个值的下标, 就可以快速定位中序遍历数组的父节点位置,快速区分左右子树 /** * Definition for a binary tree node. *原创 2021-03-11 23:21:57 · 150 阅读 · 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 · 126 阅读 · 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 · 153 阅读 · 0 评论
分享