![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++ 刷题记录
c++ 刷题记录
卡、
这个作者很懒,什么都没留下…
展开
-
c++ 刷题 机器人的运动范围
题目描述地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?思路:1、从(0,0)开始2、判断当前格子是否遍历过是则执行步骤33、判断当前所在格子是否满足题设条件:行坐标和列坐标的数位之和小于等于k,是则执行步原创 2020-06-03 14:29:11 · 318 阅读 · 0 评论 -
c++ 刷题 两个单调不减链表合成
题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。我的思路:创建一个新的链表头结点,该结点不断地指向两个有序链表的头部较小的元素,每指向一次则被指向的链表后移一位。/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode*原创 2020-05-29 12:10:38 · 218 阅读 · 0 评论 -
c++ 刷题 输入一个链表,反转链表后,输出新链表的表头。
题目描述输入一个链表,反转链表后,输出新链表的表头。思路:头插法:代码:/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* ReverseList(ListNode* pHead) { if(pHead == NULL)原创 2020-05-26 18:40:24 · 460 阅读 · 0 评论 -
c++刷题 输入一个链表,输出该链表中倒数第k个结点。
题目描述输入一个链表,输出该链表中倒数第k个结点。思路:代码:/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) { if(pListHead =原创 2020-05-26 16:20:22 · 626 阅读 · 0 评论 -
c++ 刷题 矩形覆盖
题目描述我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?比如n=3时,2*3的矩形块有3种覆盖方法:思路:根据观察:n = 1:f(n) = 1n = 2:f(n) = 2n = 3:f(n) = 3n = 4:f(n) = 5n = 5:f(n) = 8因此根据公式得到递归算法:class Solution {public: int rectCover(int number) {原创 2020-05-26 10:41:34 · 522 阅读 · 0 评论 -
c++刷题 旋转数组的最小数字
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。我的思路:遍历数组,找到第一个比上一个元素小的元素,返回该元素。class Solution {public: int minNumberInRotateArray(vector<int> rot原创 2020-05-26 10:10:18 · 135 阅读 · 0 评论 -
c++ 刷题 leetcode面试题04. 二维数组中的查找
题目描述:在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21, 23, 26, 30]]给定 target = 5,返回 true。给定原创 2020-05-25 14:07:05 · 285 阅读 · 0 评论 -
c++ 刷题 leetcode面试题03. 数组中重复的数字
找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3限制:2 <= n <= 100000我的思路:建立hash映射表:class Solution {public: int findRepeatNumber(vector<int&g原创 2020-05-25 12:35:37 · 248 阅读 · 0 评论 -
c++ 刷题 输入两个链表,找出它们的第一个公共结点。
题目描述输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)思路:初看这题我的第一反应就是这么简单?直接全部遍历找到第一个相同的结点返回就好:代码://自己的/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public:原创 2020-05-22 15:54:23 · 377 阅读 · 0 评论 -
c++ 刷题 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。
题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路:先序遍历结果: 1 2 4 7 3 5 6 8中序遍历结果: 4 7 2 1 5 3 8 61、先序遍历的第一个数据就是根节点2、中序遍历根节点左边的就是左子树,右边的就是右子树3、根据第1、2步可得到根节点、左子树、右子树,接下来就是把左子树、原创 2020-05-20 15:03:43 · 1753 阅读 · 1 评论 -
c++刷题记录 输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序
题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!输出描述:输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序思路:主要是数学公式:等比数列的和 ,d = 1S原创 2020-05-18 13:25:21 · 162 阅读 · 0 评论 -
c++ 刷题 心得 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
题目描述:从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。思路:1、创建一个树结点的队列,先把根结点放入队列2、遍历当前队列的所有树节点,每出队一个树节点就把他的孩子入队3、如果此时队列不为空,执行2代码:/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(N原创 2020-05-16 11:22:56 · 821 阅读 · 0 评论 -
c++刷题 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。
题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。我的思路:1、先验证输入的结点是否为空,空则返回NULL2、判断输入节点是叶子结点还是非叶子结点:3、如果是叶子结点的话判断该节点是左孩子还是右孩子左孩子的情况: 返回父结点右孩子的情况:返回祖先是左孩子时的父结点,如果没有祖先是左孩子(即输入的节点是最后一个元素)返回NULL4、如果是非叶子结点则找输入结点的右孩子的最左端的左孩子输入的结点情况分析原创 2020-05-14 12:33:34 · 493 阅读 · 1 评论 -
c++ 刷题 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。心得
题目描述:给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。我的思路:起初我是想:链表无非是有环和无环两种情况因此1 遍历每一个链表结点,并把节点的地址存到一个vector数组里2 遍历新的结点时判断该节点是否在数组里这个思路应该行得通,但是最坏情况下的时间复杂度:o(n^2)阶,因为每输入一个元素都得与保存节点的数组比较看是否重复。思路通不代表能行,在写代码时遇到的指针的存储类型的问题,使用int型指针报错,网上搜也没找到什么类型的变量能存储指针的地址(指针又不能放原创 2020-05-13 21:09:53 · 177 阅读 · 0 评论 -
c++ 刷题 找出字符流中第一个只出现一次的字符 心得
题目描述请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。输出描述:如果当前字符流没有存在出现一次的字符,返回#字符。思路:刚刚面对这个题目时我的想法是:1 遍历每个字符串的字符2 遍历第i个字符时与其他所有的字符比较是否重复3 若第i个字符未重复则输出这个字符,并退出遍历4 若所有字符都重复则输出 #这个思路是没有问题,但是他原创 2020-05-12 15:21:27 · 282 阅读 · 0 评论 -
c++ 刷题 判断字符串是否表示数值 心得
题目描述:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。解题思路:关键是通过分析的出数值的格式为(±)n.ne(±)n,然后对每一位字符进行格式对照格式:1、e不能为首尾元素,只能有一个2、小数点不能为首尾元素,只能有一个,小数点前应为数字或正负号,小数点后为数字,不应出现在e之后3、正负号应出原创 2020-05-11 19:30:43 · 1018 阅读 · 0 评论 -
c++ 刷题 心得 vector声明动态一、二、三维数组、初始化以及传递参数
题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。class Solution {public: bool Find(int target, vector<vector<int> > array) {...原创 2020-05-02 00:16:05 · 1148 阅读 · 0 评论