[Lc]面试题56_II数组中数字出现的次数II 2020-06-24 剑指offer 题目 题解 1. 有限状态机 详细题解看这里。这里放几张来自该题解的图。详细题解还是看 Krahets 大神的题解吧。 时间复杂度: $O(n)$ 空间复杂度: $O(1)$ 重点掌握one和tw Read more...
[Lc]面试题56_I数组中数字出现的次数 2020-06-24 剑指offer 题目 题解 我们先来看下异或的性质(数学里异或的符号是 $\oplus$): 交换律:$p \oplus q = q \oplus p$ 结合律:$p \oplus (q \oplus r) = (p \oplus q) \oplus r$ 恒等率:$p \oplus Read more...
[Lc]面试题55_II平衡二叉树 2020-06-24 剑指offer 题目 二叉树结构如下: //Definition for a binary tree node. struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; 题解 详细题解可参见#110题解 1. 递归法 时间复杂度: $O(n\log n)$ 空间复杂度: $O(n)$ class Solution { Read more...
[Lc]面试题55_I二叉树的深度 2020-06-24 剑指offer 题目 二叉树结构如下: //Definition for a binary tree node. struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; 题解 详细题解可参见#104题解 1. 递归法 时间复杂度$O(N)$ 空间复杂度$O Read more...
[Lc]面试题54二叉搜索树的第k大节点 2020-06-24 剑指offer 题目 二叉树结构如下: //Definition for a binary tree node. struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; 题解 **二叉搜索树的中序遍历是递增数组,那么二叉搜索树的中序遍历的倒序是递 Read more...
[Lc]133克隆图 2020-06-23 leetcode 题目 图的定义如下: // Definition for a Node. class Node { public: int val; vector<Node*> neighbors; Node() { val = 0; neighbors = vector<Node*>(); } Node(int _val) { val = _val; neighbors = vector<Node*>(); } Node(int _val, vector<Node*> _neighbors) { val = _val; neighbors = _neighbors; } }; 题解 两个方法。DFS,BFS 1. DFS Read more...
[Lc]面试题53_II 2020-06-23 剑指offer 题目 题解 1. 挨个查找法 时间复杂度$O(N)$ 空间复杂度$O(1)$ 就是挨个查找数组,找到与下标不一致的数即可,但不是最右的方法 2. 二分查找法 时间 Read more...
[Lc]面试题53_I在排序数组中查找数字I 2020-06-22 剑指offer 题目 题解 1. 挨个查找法 时间复杂度$O(N)$ 空间复杂度$O(1)$ 就是挨个查找数组,找到的第一个就是开始位置,找到的最后一个就是结束位置。 这个 Read more...
[Lc]34在排序数组中查找元素的第一个和最后一个位置 2020-06-22 leetcode 题目 题解 1. 挨个查找法 时间复杂度$O(N)$ 空间复杂度$O(1)$ 就是挨个查找数组,找到的第一个就是开始位置,找到的最后一个就是结束位置。 这个 Read more...
[Lc]面试题52两个链表的第一个公共节点 2020-06-21 剑指offer 题目 链表定义: //Definition for singly-linked list. struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} }; 题解 1. 双指针法交替遍历 时间复杂度$O(n)$ 空间复杂度$O(1)$ 从两个链表的表头开始遍历 Read more...