
算法
文章平均质量分 81
分享面试常考算法和解题思路
西瓜味儿的小志
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
剑指offer栈、队列、位运算题目汇总(面试必备)
剑指 offer 栈、队列题目汇总(C++版) 1、用两个栈实现队列 用两个栈实现一个队列。队列的声明如下,实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 返回 -1 ) 思路:我们知道队列特点是先进先出,而栈的特点是先进后出。因此我们使用栈1来存储数据,栈2来模拟队列弹出数据。栈2如果为空,就需要把栈1的数据全都 push 过来,否则如果栈2不为空,取出栈顶元素即可。原创 2021-11-18 10:15:33 · 4937 阅读 · 0 评论 -
剑指offer数组题目汇总(面试必备)
剑指 offer 数组题目汇总(C++版) 1、数组中重复的数字 一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。找出数组中任意一个重复的数字。 思路1:先排序,在遍历。 时间复杂度:O(nlog(n)) ,空间复杂度:O(1) 思路2:遍历数组时查询哈希表是否已有这个数,有就返回,没有就添加。时间复杂度:O(n), 空间复杂度:O(n) 思路1和2比较简单,代码就不贴了。主要说一下下面的方原创 2021-11-05 10:56:33 · 476 阅读 · 0 评论 -
二分查找算法模板(太强了吧)
二分查找算法模板 模板1 当将区间 [l, r] 划分成 [l, mid] 和 [mid + 1, r] 时,其更新操作是 r = mid 或 l = mid + 1,计算 mid 时不需要加1,即 mid = (l + r)/2。 C++代码模板: int bsearch_1(int l, int r) { while (l < r) { int mid = (l + r) / 2; if (check(mid)) r = mid;原创 2021-10-19 17:58:06 · 320 阅读 · 0 评论 -
剑指offer二叉树题目汇总(面试必备)
1、二叉树的镜像 输入一个二叉树,该函数输出它的镜像。 举例: 思路1:递归 对于样例来说,先改变根结点8的左指针指向的值,左边指向的值换到右边,右边指向的值换到左边。 接下来,递归处理,将左子树的根结点作为新的 root,进行上面相同的操作。右子树同理。 时间复杂度:O(n) 空间复杂度:O(n) TreeNode* Mirror(TreeNode* pRoot) { if(!pRoot) return pRoot; //特判:如果pRoot为空,返回空 swap(pRoot原创 2021-10-18 18:40:48 · 289 阅读 · 0 评论 -
剑指offer链表题目汇总(面试必备)
1、反转链表 输入一个链表,反转链表后,输出新链表的表头。 比较简单,直接上代码。 时间复杂度:O(n) 空间复杂度:O(1) ListNode* ReverseList(ListNode* pHead) { if(!pHead) return pHead; ListNode* pre = nullptr; while(pHead) { ListNode* temp = pHead->next;原创 2021-09-13 11:37:29 · 395 阅读 · 0 评论 -
面试中常考排序算法总结(不看后悔)
面试中常见的排序算法(C++版) 前置基础知识: 稳定:a=b且a在b前面,排序之后a仍然在b的前面 不稳定:a=b且a在b前面,排序之后 a 可能会出现在 b 的后面 时间复杂度:对排序数据的总的操作次数。反映当n变化时,操作次数呈现的规律 空间复杂度:算法在计算机内执行时所需存储空间的度量,它也是数据规模n的函数 1、冒泡排序 流程: 比较相邻的元素。如果第一个比第二个大,就交换它们两个; 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该原创 2021-09-03 10:59:06 · 579 阅读 · 0 评论 -
二叉树遍历算法总结(递归+非递归)
二叉树的前序中序后序层序遍历总结(C++版) 1、前序遍历(根左右) 递归:没什么好说的 void preOrder(TreeNode* root) { if (!root) return; cout << root->val << " "; preOrder(root->left); preOrder(root->right); } 非递归:借助栈 前序遍历根左右,先将当前节点打印,并将其进栈,节点指向原创 2021-09-02 18:55:47 · 368 阅读 · 0 评论