刷题
weixin_42683621
这个作者很懒,什么都没留下…
展开
-
二叉树的先序,中序,后序遍历非递归实现
二叉树的先序非递归实现思路:用栈模拟先序过程,先序是先根节点,后左节点,后右节点void preOrderWithoutRecusive(TreeNode* root){ if (root == nullptr) return; stack<TreeNode*>sta; TreeNode* tmp = root; while (!sta.empty() || tmp) { if (tmp) { cout << tmp->val <<原创 2020-05-20 23:12:54 · 479 阅读 · 1 评论 -
LeetCode刷题
LeetCode 122. 买卖股票的最佳时机 II原题链接贪心算法class Solution {public: int maxProfit(vector<int>& prices) { int len = prices.size(); int maxPro = 0; for (int i = 1;i < len;i++){ if (prices[i] > prices[i-1]){原创 2020-05-16 22:11:38 · 148 阅读 · 0 评论 -
剑指offer 面试题54. 二叉搜索树的第k大节点
面试题54. 二叉搜索树的第k大节点修改的中序遍历class Solution {public: int ans; int kthLargest(TreeNode* root, int k) { dfs(root, k); return ans; } void dfs(TreeNode* root, int &k){ if (root == nullptr) return; dfs(root->原创 2020-05-15 20:16:43 · 101 阅读 · 0 评论 -
剑指offer 面试题55 - II. 平衡二叉树
面试题55 - II. 平衡二叉树原题链接后序遍历计算高度时判断高度差class Solution {public: bool sign=true; bool isBalanced(TreeNode* root) { getDepth(root); return sign; } int getDepth(TreeNode* root){ if (root == nullptr) return 0原创 2020-05-15 20:14:02 · 105 阅读 · 0 评论 -
剑指offer:面试题65. 不用加减乘除做加法
面试题65. 不用加减乘除做加法原题链接思路 :与运算计算进位 异或运算计算非进位和 不断循环直至进位为0class Solution {public: int add(int a, int b) { while (b != 0) { int c = ((unsigned int)(a & b) << 1); // 计算进位. 先保留同为1的位,都为1的位要向左进位,因此左移1位 c++不支持负值左移 a原创 2020-05-15 20:10:29 · 146 阅读 · 0 评论 -
LeetCode 146. LRU缓存机制
LeetCode 146. LRU缓存机制原题地址思路:双向链表(STL中的list)和哈希表,其中双向链表保存数据,哈希表作为维护的映射工具注意点:更新cache的双向链表时记得同步更新哈希表中数据class LRUCache {public: unordered_map<int, list<pair<int, int>>::iterator>ma; list<pair<int, int>>cache; int capa; in原创 2020-05-14 12:04:29 · 125 阅读 · 0 评论 -
快排算法,优化,非递归实现以及链表的快排
快速排序算法void QuickSort(vector<int>&arr, int left, int right){ if (left >= right) return; int i = left; int j = right; while (i < j)//左右指针相向遍历交换 { while (arr[j] > arr[left] && i < j)//最左侧数作为基准数 { j-原创 2020-05-13 21:13:44 · 145 阅读 · 0 评论