剑指Offer
Wade_Gao
这个作者很懒,什么都没留下…
展开
-
剑指Offer-68:二叉树的最近公共祖先
一、题目描述二、解题思路这是剑指Offer的最后一道题,本质是二叉树的后序遍历(非递归)。牢牢记住二叉树的后序遍历以非递归形式遍历到某一节点时,辅助栈内保存的元素即为根节点到该节点的路径。知道了上面的性质后,我们就可以利用这两个性质来做题创建三个栈:遍历栈s,保存pp的路径的栈sp和保存qq的路径的栈sq遍历到当前节点时,调用拷贝构造函数,把遍历栈s拷贝给sp或sq当两个待查找节点...原创 2020-04-25 02:23:57 · 129 阅读 · 0 评论 -
剑指Offer-51:数组中的逆序对(InversePairs)
一、题目描述二、解题思路典型的归并排序方法怎么计算count呢?在每次归并进行比较时如果nums[i] <= nums[j]:说明当前位置没有逆序,继续向下比较;如果nums[i] > nums[j],说明在前半段中,位置i的已经都比nums[j]大了前半段中位置i及其后面的数字一定比nums[j]大。确定前半段比nums[j]大的个数:注意是“在前半段中i及其后...原创 2020-04-24 12:10:02 · 290 阅读 · 0 评论 -
剑指Offer-04:二维数组中的查找(FindInPartiallySortedMatrix)
一、题目描述二、解题思路可以通过四个顶点,将矩阵分为四个区域左上角:只有比左上角的元素大的,如果从左上角出发,则找不到比较的反馈左下角:右面的同行元素都比它大,上面同列元素都比它小,可以界定寻找路径右上角:同左下角右下角:同左上角三、解题代码LeetCode解题代码class Solution {public: bool findNumberIn2DArray(v...原创 2020-04-24 10:39:38 · 212 阅读 · 0 评论 -
剑指Offer-15:二进制中1的个数(NumberOf1InBinary)
一、题目描述二、解题思路解法1:逐步查看该数字的最低位,看是否为111,然后把数字左移111位。时间复杂度为O(32n)O(32n)O(32n)解法2:将数字不断与(n−1)(n-1)(n−1)相与,每次计算完成后,只要数字不为000,就说明存在111个111三、解题代码解法1class Solution {public: int hammingWeight(uint3...原创 2020-04-23 01:51:47 · 128 阅读 · 0 评论 -
剑指Offer-03:数组中重复的数字03_01_DuplicationInArray
一、题目描述二、解题思路既然所有数字都在[0,n−1)[0, n-1)[0,n−1)范围内,那么一个下标一定对应着一个值,且该值与下标最终一定相等,一个萝呗占一个坑。如果比较过程中,下标和值不等,那么就交换理论上与值唯一匹配的那个下标的值(a[a[i]]a[a[i]]a[a[i]])和当前的值(a[i]a[i]a[i]),不停地交换,直到它们相等。如果在这一过程中(下标和值此时仍然不匹...原创 2020-04-23 00:39:53 · 152 阅读 · 0 评论