题意: 合并两个二叉树, 没有说不可以改变原来的二叉树. 合并的时候把结点求合. C/C++ 中二叉树的定义 在C或者C++中, 二叉树的定义可以很方便的用结构体来表征. 其中左右子树都是递归定义. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) …
一直以来都想要全幅的单反, 在之前入了经典24-70mm F2.8佳能红圈镜头 (万能焦), 但是一直机身还是半画幅的 T3i, 朋友就说这红圈镜头需要在全幅单反上才能发挥最大的功效. 考虑许久, 咬咬牙, 入了佳能 6D Mark II 入门级全幅单反, 我是从EBAY上买的, 货是从爱尔兰发出来的, 因为这样会便宜一些(也不需要补交关税). 新机器5天左右收到了, 960英镑左右. 这个机身对我来说较好用的功能是: 触屏, 还有就是可以通过蓝牙或者WIFI连接电脑和手机. 试想一下和妹子一起游山玩水, 拍了很多照片, 然后一起坐下来休息吃个饭喝个水的时候就可以把照片传到手机上 PP图啥的, 不会那么无聊. 全幅相机可以让全幅镜头变宽, 24mm …
题意, 有一个N大小的数组, 数组里的数字在1到N之间, 有些数字出现2次, 有些数字出现1次. 请找出所有出现2次的数字. 要求时间复杂度是O(N) 空间复杂度是 O(1). 如果不考虑空间复杂度, 那么我们可以开一个O(n) 的哈希表来记录数字是否已经出现过了, 在C++里我们可以用 unordered_set 集合来实现 O(1) 的查找和插入. class Solution { public: vector<int> findDuplicates(vector<int>& nums) { vector<int> r; unordered_set<int> hash; …
题意: 给定一个字符串, 输出所有字符大小写都可以组成的字符串. 如: “ab1” 能成生 DFS 深度优先 – 递归 我们可以从字符串的开头递归的把当前字符给添加到最终的字符串中, 当当前字符是字母的时候, 就有两种可能了. 当到达字符串尾部的时候我们把当前字符串添加到结果数组中即可. class Solution { public: vector<string> letterCasePermutation(string S) { search("", S, 0, S.length() - 1); return …
题意: 找出N叉树的最大深度. 上面这颗树, 深度为3. N叉树的C++定义 // Definition for a Node. class Node { public: int val; vector<Node*> children; Node() {} Node(int _val, vector<Node*> _children) { val = _val; children …
题意: 给出一个数组, 求第三大的数字是多少, 重复的数字并不算在内, 比如 第3大的数字是1 而不是 2. Using std::set set 是集合, 是有序的(从小到大), 集合中不包含重复的元素, 所以我们可以遍历数组并把数字添加到集合中. 在这过程中, 如果集合大小大于三个, 就把最小的元素删除. 我们不能直接按照索引的访问集合中的元素, 但是我们可以用迭代器 rbegin() 和 begin() 来访问集合中最大和最小的元素. class Solution { public: int …