![](https://img-blog.csdnimg.cn/20190918140012416.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法
算法总结
黑米姐姐
喜欢就要做到极致
展开
-
剑指offer(58---67)
文章目录58、对称的二叉树59、按之字形顺序打印二叉树60、把二叉树打印成多行61、序列化二叉树62、二叉搜索树的第k个结点63、数据流中的中位数64、滑动窗口的最大值58、对称的二叉树请实现一个函数,用来判断一棵二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。首先考虑递归的方式,也就是对称的二叉树两边的子树要是对称的,也就是左子树的左边和右子树的右边要相同,左子树的右边要和右子树的左边相同,我们此时将根结点的左右子树当成两个数,使用一个函数实现看起是否对称即可(原创 2020-07-23 17:42:19 · 234 阅读 · 0 评论 -
剑指offer(51---57)
文章目录51、构建乘积数组52、正则表达式匹配53、表示数值的字符串54、字符流中第一个不重复的字符55、循环中环的入口结点56、删除链表中重复的结点57、二叉树的下一个结点51、构建乘积数组给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…*A[i-1]A[i+1]…*A[n-1]。不能使用除法。(注意:规定B[0] = A[1] * A[2] * … * A[n-1],B[n-1] = A[0] * A[1] * … * A[n原创 2020-07-21 22:21:41 · 152 阅读 · 0 评论 -
剑指offer(41---50)
文章目录41、和为s的连续正数序列42、和为s的两个数字43、左旋转字符串44、反转单词顺序列45、扑克牌顺子46、41、和为s的连续正数序列小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列?在看到这个题目时,我们可以想到一个类似原创 2020-07-20 18:32:10 · 160 阅读 · 0 评论 -
剑指offer(31---40)
文章目录31、整数中1的个数32、把数组排成最小的数33、丑数34、第一个只出现一次的字符35、数组中的逆序对36、两个链表的第一个公共结点37、数字在排序数组中出现的次数38、二叉树的深度39、平衡二叉树40、数组中只出现一次的数字31、整数中1的个数求出1到13的整数中1出现的次数,并算出100到1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任原创 2020-07-17 22:37:02 · 195 阅读 · 0 评论 -
剑指offer(21---30)
文章目录21、栈的压入、弹出序列21、栈的压入、弹出序列输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)class Solution {public: bool IsPopOrder(vector<int> pushV,vec原创 2020-07-16 20:10:51 · 157 阅读 · 0 评论 -
剑指offer(11---20)
文章目录11、二进制中1的个数12、数值的整数次方13、调整数组顺序使奇数位于偶数前面14、链表中倒数第k个结点15、反转链表16、合并两个排序的链表17、树的子结构18、二叉树的镜像19、顺时针打印矩阵20、包含min函数的栈11、二进制中1的个数输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。一般拿到这种问题,我们首先想到的算法就是判断最低位是不是1,也就是将这个数与1做与运算,看是否是1,如果是1,个数+1,然后这个数右移一位,进行循环直到这个数为0,但是这种方法在遇到原创 2020-07-15 16:24:29 · 137 阅读 · 0 评论 -
剑指offer(1---10)
文章目录1、二维数组中的查找2、替换空格3、从尾到头打印链表4、重建二叉树5、用两个栈实现队列6、旋转数组的最小数字7、斐波那契数列8、跳台阶问题9、变态跳台阶1、二维数组中的查找在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数从题目看这个二维数组的规律是从上到下,从左到右是依次递增的,这里就可以利用二分查找的思想来实现,将数组看成一个矩阵,这里有一个特殊的原创 2020-07-14 22:28:56 · 141 阅读 · 0 评论 -
leetcode刷题篇---双指针
1、有序数组的 Two Sum:在有序数组中找出两个数,使它们的和为 target这个首先它的前提是有序数组,因此可以使用双指针结合二分查找的方式来进行,一个指针指向值比较小的,从头向尾移动,一个指针指向值比较大的,从尾向头移动,则可得:(1)如果两者相加结果sum==target,就得到想要的结果;(2)如果两者相加结果sum<target,则将指向值比较小的指针向后移动;(3)如果两者相加结果sum>target,则将指向值比较大的指针向前移动;实现代码:vector<.原创 2020-05-16 23:33:06 · 343 阅读 · 0 评论 -
算法总结:动态规划学习笔记
在动态规划中,状态与状态转移方程以及初始值是最重要的,只有给出了状态和状态转移方程,一切就好办了。Fibonacci要求输入一个整数n,请输出fibonacci数列的第n项我们一般的方法是使用递归的方法,但是它的时间复杂度是O(2^n),当n这个数字很大时,效率会很低,甚至栈溢出,此时我们就可以使用动态规划的方法来解决这个问题;首先,我们给出这个问题的状态:求F(n)状态转移方程是:F(...原创 2020-02-24 22:23:07 · 240 阅读 · 0 评论