
剑指offer
沐沐余风
啦啦啦啦啦~
展开
-
剑指offer 对称二叉树
1.题目描述请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。2.分析对称二叉树的题刷leetcode也做过,附上leetcode连接之前写的题解 Symmetric Tree原创 2017-05-24 20:34:21 · 317 阅读 · 0 评论 -
剑指offer 平衡二叉树
1.题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。2.分析平衡二叉树在leetcode刷题时也做过,附上题目链接之前写的解题博客链接Balanced Binary Tree原创 2017-05-24 20:28:35 · 334 阅读 · 0 评论 -
剑指offer 数组中只出现一次的数字
1.题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。2.分析之前做过找出数组中唯一一个只出现一次的数组,链接,通过异或的方法求解。 本题需找出两个只出现一次的数字,所以需要想办法将数组分为2个子数组,两个数字分别在一个子数组,然后再采用异或的方式。 步骤: 1)数组的所有元素异或,得到的结果必定非0,假设为n 2)找出n对应二进制最右边位的原创 2017-05-19 12:23:09 · 330 阅读 · 0 评论 -
剑指offer 求1+2+3+...+n
1.题目求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。2.分析剑指offer上有使用构造函数来求解的方法,很难想到。还有一种比较巧妙的解法。 利用逻辑与,A && B,如果A为false,则不会判断B。这一特性可以用来结束递归。3.代码n>0时, 计算 sum+=getSum(n-1) n=0时,不满足n原创 2017-09-04 22:40:01 · 313 阅读 · 0 评论 -
剑指offer 最长公共子序列
1.题目我们有两个字符串m和n,如果它们的子串a和b内容相同,则称a和b是m和n的公共子序列。子串中的字符不一定在原字符串中连续。 例如字符串“abcfbc”和“abfcab”,其中“abc”同时出现在两个字符串中,因此“abc”是它们的公共子序列。此外,“ab”、“af”等都是它们的字串。 现在给你两个任意字符串(不包含空格),请帮忙计算它们的最长公共子序列的长度。注意:子序列≠子串,子序列不原创 2017-09-04 23:03:15 · 1753 阅读 · 0 评论 -
剑指offer 两个链表的第一个公共结点
1.题目描述输入两个链表,找出它们的第一个公共结点。2.分析如果两个链表有公共节点,那么这两条链表从该公共节点开始往后的部分是重合的。 可以想象一个Y造型,前面分叉,后面从公共节点开始回合。 步骤: 1)求两个链表的长度差delta,较长的链表从head开始先走delta个节点 2)两个链表从当前节点开始,依次比较节点是否相同。3.代码class Solution {public:原创 2017-05-19 14:19:52 · 272 阅读 · 0 评论 -
剑指offer 数据流中的中位数
1.题目如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。 要求:时间复杂度不超过O(n)2.分析最大堆:根结点的值最大,每个节点的值都比子节点大 最小堆:根结点的值最小,每个节点的值都比子节点小 将数据分成两部分,一部分位于中位数左边,一部分位于右边 用最原创 2017-09-16 22:38:42 · 320 阅读 · 0 评论 -
剑指offer 最小的k个数
1.题目描述输入n个数字,找出其中最小的k个数。注:有的还会要求保持原有的顺序输出2.分析两种思路: 1)利用快排的思想,找到第k大的分界点。左边的元素都是比它小的 2)维护一个长度为k的容器,里面存放当前最小的k个数,遍历一个新的元素判断是否将其插入该容器。3.代码快排的思想,复杂度O(n)void LeastK(int* array, int n,int k) { if (array原创 2017-09-21 15:23:50 · 327 阅读 · 0 评论 -
剑指offer 滑动窗口的最大值
剑指offer 滑动窗口的最大值原创 2017-09-17 01:24:45 · 253 阅读 · 0 评论