- 博客(21)
- 资源 (8)
- 收藏
- 关注
原创 剑指Offer——包含min函数的栈
题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。思路:使用两个栈,一个存数据,一个存最小值,两个栈中的元素数量始终是一致的,也就是数据栈中push元素时,也要把当前最小值push进最小值栈。class Solution {private: stack<int> m_min; stack<int&...
2019-07-31 15:17:50 83
原创 剑指Offer——树的子结构
题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)思路:要依次遍历A中的节点,找到和B的根节点一样的节点时,就检查A中以当前节点存在的子树是否包含B。class Solution {public: bool HasSubtree(TreeNode* A, TreeNode* B) { bool result =...
2019-07-31 14:58:46 72
原创 剑指Offer——二叉树的镜像
题目描述操作给定的二叉树,将其变换为源二叉树的镜像。输入描述:二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5思路:先前序遍历二叉树,若有子树,就交换两个子树,若是叶子节点,就不交换。class Solu...
2019-07-31 14:21:10 73
原创 剑指Offer——合并两个排序的链表
非递归版ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { if(!pHead1) return pHead2; if(!pHead2) return pHead1; ListNode* p1=pHead1; ListNo...
2019-07-30 21:00:36 74
原创 剑指Offer——反转链表
题目描述——输入一个链表,反转链表后,输出新链表的表头。思路:一个指针指向当前节点,一个指针指向前驱节点。 ListNode* ReverseList(ListNode* pHead) { if(!pHead) return NULL; ListNode* p = pHead; ListNode* pre = NULL;...
2019-07-30 18:36:59 69
原创 剑指Offer——链表中倒数第k个结点
题目描述输入一个链表,输出该链表中倒数第k个结点。思路:快慢指针,快的先走k步,到第k个节点,然后快慢指针一起跑,快指针到最后一个节点时,慢指针就是倒数第k个节点。注意:1,边界条件:头结点为空或者k为0;2,快指针先走k步,i<k-1即可;3,一起跑的终止条件是快指针指到最后一个节点而不是最后一个节点的next。ListNode* FindKthToTail(ListNode* p...
2019-07-30 17:39:53 120
原创 剑指Offer——调整数组顺序使奇数位于偶数前面
思路:此题若没有“保证奇数和奇数,偶数和偶数之间的相对位置不变”这一条件,可以用快排的思想,但是条件所限,只能考虑稳定的算法,快速排序、选择排序、希尔排序都是不稳定的,只能选冒泡排序,插入排序了。void reOrderArray(vector<int> &a) {//基于冒泡排序 int len = a.size(); if(len==0)...
2019-07-30 17:13:06 83
原创 剑指Offer——数值的整数次方
思路:考虑边界情况,1:0-exponent基数为0,指数为负数的话,没有意义;2:基数不为0,指数为负数的话,要考虑结果变为倒数。class Solution {public: double Power(double base, int exponent) { if(base==0.0&&exponent<0) retur...
2019-07-30 15:33:31 124
原创 剑指Offer——二进制中1的个数
思路一:让1不断左移去位与nint NumberOf1(int n) { if(n==0) return 0; int count = 0; int flag = 1; while(flag!=0) { if((n&flag)!=0) ...
2019-07-30 10:02:22 113
原创 剑指offer——矩形覆盖
思路:如上图,用2x1的去覆盖2x10的矩形,让2x10为f(10),第一步有两种方法:1,2x1的竖着放在第一列,则还剩下2x9的矩形,记为f(9);2,2x1的横着放在第一行,那么第二行只能横着放一个,则还剩下2x8的矩形,记为f(8);则f(10)=f(9)+f(8)。int rectCover(int n) { if(n<=2) return ...
2019-07-29 20:53:15 133
原创 剑指Offer——跳台阶/变态跳台阶
跳台阶思路:斐波那契数列的应用。其实第一次只有两种跳法:第一次跳一个台阶,那么后面就有f(n-1)次跳法;第一次跳两个的话,后面就有f(n-2)次跳法int jumpFloor(int number) { if(number<=2) return number; int minN = 1; int m...
2019-07-29 20:33:52 84
原创 剑指Offer——斐波那契数列
思路:f(0)=0,f(1)=1,f(n)=f(n-1)+f(n-2).首先想到递归,但是会产生一些冗余计算,复杂度是O(n^2),所以用迭代方法,让f(0)=0,f(1)=1作为已知条件,从下往上算。[外链图片转存失败(img-FKTTu1CH-1564393199043)(https://www.cuijiahua.com/wp-content/uploads/2017/11/basis_7...
2019-07-29 17:40:55 105
原创 剑指Offer——旋转数组的最小数字
思路:采用二分查找,分这几种情况。1. 保证旋转数组(a[low]>=a[high]),若不保证,则没有旋转,是单调递增的,直接输出第一个数;否则下面几种情况;2. 只剩两个数,第二个肯定最小;3. a[low]=a[mid]=a[high],如[1,1,1,0,1],最小值不好判断,只能挨个找,因为a[low]>=a[high],所以让low++;4. a[mid]>=...
2019-07-28 16:43:03 72
原创 剑指Offer-用两个栈实现队列
思路:一个栈s1入队列,一个栈s2出队列。入队列时,把s2全部倒在s1中,然后将入队列的数压在s1中;出队列时,把s1全部倒在s2中,取s2栈顶元素出队列。class Solution{public: void push(int node) { while(!s2.empty()) { s1.push(s2.top()); ...
2019-07-27 15:36:26 67
原创 剑指offer——重建二叉树
思路:知道前序和中序求二叉树,我觉得主要是弄清前序序列和中序序列的长度区间。首先在前序里面找根节点,在中序里面找左右子树;在中序序列里面找到根节点所在的位置,求出左子树长度和右子树长度,然后递归建树。TreeNode* reConstructBinaryTreeCore(vector<int> pre, int preL, int preH, vector<int> vi...
2019-07-27 15:21:41 81
原创 剑指offer——替换空格
思路:遍历字符串找出空格数目count,原长度+count*2=替换后长度。从后往前插。void replaceSpace(char *str,int length) { if(length==0||str==NULL) return; int count=0; for(int i=0;i<length;i++) ...
2019-07-27 11:33:50 84
原创 剑指offer——二维数组中的查找
思路:考虑从四个角遍历,首先去除左上角和右下角的考虑,因为在左上角的走向都是递增的,在右下角的走向都是递减的,没法判断往哪个线路走;所以要考虑从另外两个角出发。bool Find(int target, vector<vector<int> > array) { int row = array.size(); if(row==0) ...
2019-07-27 11:12:36 80
原创 编程——哈希表
求最大公共子串的长度例如 “abcabcbb”->3 “bbb”->1思路:采用双指针,low,high。每次用high指向的元素在哈希表中查找上一次出现的位置,若该位置>=low,则说明在low到high之间已经存在该元素,那么令low为上一次出现位置+1,修改该元素最后出现的位置;若<low,说明low到high中没有该元素,将该元素入map,并计算最大长度。in...
2019-07-20 21:02:09 651
原创 编程——数学类专题
1 二进制加法给定两个字符串a,b,每个字符串中是二进制数,编程实现两个数相加的结果。例,a=“11”,b=“1”,return “100”思路:首先逆置字符串使低位对齐,每遍历(按最大的长度遍历)一次,两个对应位相加,再加上低位的进位,若某个字符串上没有数字的时候(下标是否>=字符串长度-1),加上0。用String累加每一位上产生的结果,最终把String反转,就是最终结果。st...
2019-07-19 21:15:27 770
Armbian_5.77_Aml-s905_Debian_stretch_default_5.0.2_20190401.zip
2021-04-10
背包问题最新版讲解.zip
2019-08-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人