[Lc]69x的平方根

题目 题解 1. 二分查找法 时间复杂度$o(log{N})$ 空间复杂度$O(1)$ class Solution { public: int mySqrt(int x) {//两个方法。1、二分查找法 if (x <= 1) return x;//0和

[Lc]50Pow(x,n)

题目 题解 快速幂是指x**2n == x**n + x**n,利用这一性质,不断的一半的数进行运算。有递归法和迭代法两种,注意要区分n为奇偶和n为负数的情况。

[Lc]43字符串相乘

题目 题解 时间复杂度$O(mn)$ 空间复杂度$O(m+n)$ class Solution { public: string multiply(string num1, string num2) { string res = "";//初始化结果res int len1 = num1.size(), len2

面经总结

记录最近参加的面试的题目 腾讯春招实习提前批(客户端开发) 一面 二叉树的最大直径,编程题 链表的排序,要求时间复杂度$O(Nlog(N))$,空间

[Lc]29两数相除

题目 题解 这道题太恶心了,溢出搞得我头疼,先记录一个答案,来自这里,作者:cglin-2 这道题目要求不使用乘法、除法和 mod 运算符,且假设环境只能

[Lc]12整数转罗马数字

题目 题解 1. 分类法 每个数量级可以分为4类,1~3,4,5~8,9。因此就使用每个数量级取商然后选择合适的类别进行表达,余数进行下一个数量级商的

[Lc]222完全二叉树的节点个数

题目 题解 二叉树结构如下: //Definition for a binary tree node. struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; 1. 递归法 class Solution { public: int countNodes(TreeNode* root) {//1.递归直接统计节点数 return root? 1+countNodes(root->left)+countNodes(root->right) : 0; } }; 2. 利用

[Lc]226翻转二叉树

题目 题解 二叉树结构如下: //Definition for a binary tree node. struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; 1. 递归法 class Solution {//两种方法。1、递归法 public: TreeNode* invertTree(TreeNode* root) { if(!root) return nullptr;/

[Lc]199二叉树的右视图

题目 题解 二叉树结构如下: //Definition for a binary tree node. struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; //本题借鉴#102层次遍历 class Solution { public: vector<int> rightSideView(TreeNode* root) { vector<int> res; if(!root) return res; queue<TreeNode*> q{{root}}; while(!q.empty()){ res.p

[Lc]173二叉搜索树迭代器

题目 题解 二叉树结构如下: //Definition for a binary tree node. struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; //这道题就是写一个中序遍历,因为题目提到是搜索二叉树 class BSTIterator { stack<TreeNode*> s;//