刷题
sigoyi00
这个作者很懒,什么都没留下…
展开
-
卡牌分组与最大公约数
题目给定一副牌,每张牌上都写着一个整数。此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组:每组都有X张牌。组内所有的牌上都写着相同的整数。仅当你可选的 X >= 2 时返回true。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/x-of-a-kind-in-a-deck-of-c...原创 2020-04-25 14:14:10 · 131 阅读 · 0 评论 -
找二叉搜索树指定节点的下一个节点
题目设计一个算法,找出二叉搜索树中指定节点的“下一个”节点(也即中序后继)。如果指定节点没有对应的“下一个”节点,则返回null。思路对于一个节点考虑两种情况:1. 指定节点大于等于本节点,那要找的一定在右子树。2. 指定节点比本节点小,要找的节点在左子树或者是本节点。代码 TreeNode* inorderSuccessor(TreeNode* root, Tr...原创 2020-04-24 00:47:21 · 368 阅读 · 0 评论 -
寻找二叉树的最近公共祖先
题目给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/er-cha-shu-de-zui-...原创 2020-04-16 21:27:03 · 343 阅读 · 0 评论 -
旋转数组
生成旋转数组假设需要将{1,2,3,4,5}左移2位生成{3,4,5,1,2}。可以将整个数组反转{5,4,3,2,1},再将后k个数,即2个反转,前n-k个数,即5-2=3个数反转,{3,4,5,1,2}。基于非递减旋转数组的二分查找对于数组a,low指向最低位,high指向最高位,mid=(low+high)/2。情况1:a[mid]<a[high],说明mid位于右边的...原创 2020-04-13 15:05:34 · 61 阅读 · 0 评论 -
用两个栈来模拟队列
题目用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。思路push操作都push到栈1中。当要进行pop操作时,如果栈2是空,就把栈1所有元素pop出来并按pop顺序push到栈2中,就实现了先进的元素在栈顶,如果栈2不为空就直接pop栈2,因为栈2顶部就是先进的元素。代码class Solution{public: void p...原创 2020-04-13 12:49:29 · 185 阅读 · 0 评论 -
重建二叉树
题目输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路根据前序遍历可知根节点,根据中序遍历可知根节点的左右子树,递归地对左右子树进行同样的操作就能建立。代码/** * Definitio...原创 2020-04-13 12:42:44 · 63 阅读 · 0 评论 -
跳台阶
算法笔记——跳台阶又是一道见过的题,想不起来做法,所以决定开始做下笔记。题目一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法思路台阶数为1,2,3时能很快算出跳法为1,2,3。之后只需要递归地将n阶分为两种情况来考虑,即最后一步是跳两级还是跳一级。比如现在算n=4,如果我最后一次跳两级,即前面的两个台阶的跳法和n=2时一样,如果我最后一次跳一级,即...原创 2020-04-05 15:45:43 · 79 阅读 · 0 评论 -
有序二维数组查找
唉,做过的题没有思考就忘了,今天起把刷的题都记个笔记好了。有序二维数组查找在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路一:对每一行进行二分查找时间复杂度O(nlogn)思路二:依题意可以看出,对于一个数,向上是递减,向右是递...原创 2020-04-12 23:03:57 · 154 阅读 · 0 评论 -
简单题集合
题目请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。思路先计算有多少空格,就能知道最终字符串长度。为了防止覆盖后面的字符,从后往前遍历遇到空格就将空格替换成%20。代码void replaceSpace(char *str,int length) { ...原创 2020-04-12 23:28:54 · 215 阅读 · 0 评论