leetcode学习
参考剑指offer和codeTop
xywams
这个作者很懒,什么都没留下…
展开
-
CodeTop刷题-k个一组反转链表
该问题具有递归性质,前k个节点反转后,剩下的节点构成一条更小的链表。原创 2022-09-15 15:59:46 · 299 阅读 · 1 评论 -
剑指offer_两个面试案例
由于是二叉搜索树,利用大小关系即可判断。原创 2022-08-30 10:46:34 · 252 阅读 · 0 评论 -
剑指offer_发散思维能力
直接使用b[i],不使用额外的空间。方法一:记录左右乘积。时间和空间复杂度较高。原创 2022-08-22 11:53:16 · 262 阅读 · 0 评论 -
剑指offer_抽象建模能力
本来以为该题和“CCF201712-2 游戏”这个题目时一样的原理,但仔细看是不一样的。该题是每次淘汰之后,重新从0开始记数到m个数淘汰它,而后者报数一直增加,遇到k的倍数或者个位数为k则淘汰。...原创 2022-08-09 16:32:19 · 825 阅读 · 0 评论 -
剑指offer_知识迁移能力
对于「最大值」,我们可以想到一种非常合适的数据结构,那就是优先队列(堆),其中的大根堆可以帮助我们实时维护一系列元素中的最大值。本算法基于问题的一个重要性质当一个元素进入队列的时候,它前面所有比它小的元素就不会再对答案产生影响。咱也不知这个均摊时间复杂度都是O(1)要怎么看。法二两部分用substr()拼接起来。法一自己写的,用时和空间消耗都很大。法一中序遍历+vector存值。deque内的元素非严格递减。中序遍历倒着来,右根左。法三遍历拼接加取余。...原创 2022-07-20 10:59:22 · 130 阅读 · 0 评论 -
剑指offer_时间效率与空间效率的平衡
方法一:最小堆使用最小堆,会预先存储较多的丑数,导致空间复杂度较高,维护最小堆的过程也导致时间复杂度较高。方法二:动态规划剑指 Offer 50. 第一个只出现一次的字符题目方法一:方法二:队列剑指 Offer 51. 数组中的逆序对题目方法一:归并在高级排序算法(归并排序和快速排序)里,能够看到比较明显的阶段排序结果的就是归并排序。剑指 Offer 52. 两个链表的第一个公共节点题目该题不能使用额外的空间...原创 2022-07-04 16:58:21 · 174 阅读 · 0 评论 -
剑指offer时间效率39-48
摩尔投票法:核心理念为 票数正负抵消。假设第一个数为众数,往后遍历,如果当前数等于众数,票数加一,否则票数减一,每当票数为零,重新当前遍历的数为众数,重复操作,最后剩下的数即为众数。分治法剑指 Offer 40. 最小的k个数题目方法一:堆大根堆的根节点为最大值方法二:基于快速排序的数组划分剑指 Offer 41. 数据流中的中位数题目剑指 Offer 43. 1~n 整数中 1 出现的次数题目剑指 Offer 44. 数字序列中某一位的数字题目剑指 Offer 45.原创 2022-06-27 17:28:40 · 1668 阅读 · 0 评论 -
leetcode_剑指 Offer 35. 复杂链表的复制_36. 二叉搜索树与双向链表_37. 序列化二叉树_38. 字符串的排列
法一:哈希表+递归法二:哈希表+迭代法三:拼接+拆分剑指 Offer 36. 二叉搜索树与双向链表题目剑指 Offer 37. 序列化二叉树题目剑指 Offer 38. 字符串的排列题目方法一:排序加回溯方法二:交换+回溯扩展:n皇后问题...原创 2022-06-10 11:17:19 · 164 阅读 · 0 评论 -
leetcode_剑指 Offer 33. 二叉搜索树的后序遍历序列 剑指 Offer 34. 二叉树中和为某一值的路径
目录剑指 Offer 33. 二叉搜索树的后序遍历序列题目代码剑指 Offer 34. 二叉树中和为某一值的路径题目代码剑指 Offer 33. 二叉搜索树的后序遍历序列题目代码主要的想法就是递归。class Solution {public: bool check(vector<int>& postorder,int st,int en) { if(st >= en) { return true; }原创 2022-05-30 16:51:51 · 77 阅读 · 0 评论 -
leetcode_剑指offer32_从上到下打印二叉树 I II III
目录剑指 Offer 32 - I. 从上到下打印二叉树题目代码剑指 Offer 32 - II. 从上到下打印二叉树 II题目代码剑指 Offer 32 - III. 从上到下打印二叉树 III题目代码剑指 Offer 32 - I. 从上到下打印二叉树题目代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *原创 2022-05-26 11:51:58 · 115 阅读 · 0 评论 -
leetcode_剑指 Offer 30. 包含min函数的栈_剑指 Offer 31. 栈的压入、弹出序列
目录剑指 Offer 30. 包含min函数的栈题目代码剑指 Offer 31.剑指 Offer 31. 栈的压入、弹出序列题目代码剑指 Offer 30. 包含min函数的栈题目代码class MinStack {public: /** initialize your data structure here. */ //注意此处定义栈 stack<int> stk; //增加一个辅助栈,思考何时将何数压入辅助栈中 stack<int&g原创 2022-05-20 18:44:30 · 146 阅读 · 0 评论 -
leetcode_剑指 Offer 29. 顺时针打印矩阵
目录Offer 29. 顺时针打印矩阵题目代码Offer 29. 顺时针打印矩阵题目代码该题其实有很多细节,比如matrix为空等等,详情在注释中。class Solution {public: vector<int> spiralOrder(vector<vector<int>>& matrix) { int height = matrix.size(); vector<int>res;原创 2022-05-19 10:52:58 · 156 阅读 · 0 评论 -
leetcode_剑指 Offer 27. 二叉树的镜像_剑指 Offer 28.对称的二叉树
目录剑指 Offer 27. 二叉树的镜像题目代码剑指 Offer 28. 对称的二叉树题目代码剑指 Offer 27. 二叉树的镜像题目代码剑指 Offer 28. 对称的二叉树题目代码原创 2022-05-18 20:23:31 · 94 阅读 · 0 评论 -
leetcode_剑指 Offer 26. 树的子结构
目录剑指 Offer 26. 树的子结构题目代码剑指 Offer 26. 树的子结构题目代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Sol原创 2022-05-17 16:11:08 · 80 阅读 · 0 评论 -
剑指offer-代码的完整性
目录代码的完整性从三个方面确保代码的完整性三种错误处理的方式面试题16 数值的整数次方题目思考代码面试题17 打印从1到最大的n位数题目思考代码面试题18 删除链表的节点题目思考代码代码的完整性从三个方面确保代码的完整性应聘者在写代码之前,首先要把可能的输入都想清楚,从而避免在程序中出现各种各样的质量漏洞。通常我们从功能测试、边界测试和负面测试三个方面设计测试用例。三种错误处理的方式第一种方式是函数用返回值来告知调用者是否出错。第二种方式是当错误发生时设置一个全局变量。第三种方式是异常。面试原创 2022-05-17 16:03:37 · 122 阅读 · 0 评论 -
剑指 Offer 回溯法
剑指 Offer12. 矩阵中的路径题目代码class Solution {public: bool check(vector<vector<char>>& board, vector<vector<int>>& visited, int i, int j, string& s, int k) { if (board[i][j] != s[k]) { retur...原创 2022-05-09 16:44:27 · 64 阅读 · 0 评论 -
leetcode-199. 二叉树的右视图
题目解法久违得拿到题目就联想到了之前学习的方法:层序遍历。只不过之前的层序遍历是从左至右依次打印,该题我们只需要打印每层的最右节点值。简单说一下层序遍历,就是使用队列存储每一层的节点,以层为单位进行操作,每弹出一个节点就存入它的左右子节点值。代码如下:class Solution {public: vector<int> rightSideView(TreeNode* root) { //层序遍历一下 vector<int>re原创 2022-04-19 10:30:45 · 1203 阅读 · 0 评论 -
记录合并K个升序链表的方法(包含优先队列的自定义排序方法)
一.题目合并K个升序链表给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。二.合并两个有序链表回想之前做的合并两个有序列表。法一:递归/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * L原创 2022-04-11 20:07:52 · 314 阅读 · 0 评论 -
leetcode-300. 最长递增子序列
方法一:动态规划动态规划最重要的是dp数组的定义与状态转移,此时我们把dp[i]定义为考虑前i个元素方法一:贪心+二分查找原创 2022-04-14 17:26:24 · 128 阅读 · 0 评论