随笔分类 -  C、C++ 刷题

上一页 1 ··· 4 5 6 7 8 9 下一页
摘要:// 面试题31:栈的压入、弹出序列 // 题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是 // 否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1、2、3、4、 // 5是某栈的压栈序列,序列4、5、3、2、1是该压栈序列对应的一个弹出序列,但 // 4、3、5、1、2就不可能是该压栈序列的弹出序列。 #include #include bool Is... 阅读全文
posted @ 2019-03-07 21:26 深夜十二点三十三 阅读(185) 评论(0) 推荐(0)
摘要:// 面试题30:包含min函数的栈 // 题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min // 函数。在该栈中,调用min、push及pop的时间复杂度都是O(1)。 #include #include #include //////////////////////////定义一个模板类/////////////////////////// template... 阅读全文
posted @ 2019-03-07 20:35 深夜十二点三十三 阅读(200) 评论(0) 推荐(0)
摘要:// 面试题29:顺时针打印矩阵 // 题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 #include void PrintMatrixInCircle(int** numbers, int columns, int rows, int start); void printNumber(int number); void PrintMatrixClockwisel... 阅读全文
posted @ 2019-03-07 19:59 深夜十二点三十三 阅读(203) 评论(0) 推荐(0)
摘要:// 面试题28:对称的二叉树 // 题目:请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和 // 它的镜像一样,那么它是对称的。 #include #include "BinaryTree.h" bool isSymmetrical(BinaryTreeNode* pRoot1, BinaryTreeNode* pRoot2); bool isSymmetrical(B... 阅读全文
posted @ 2019-03-07 18:55 深夜十二点三十三 阅读(165) 评论(0) 推荐(0)
摘要:// 面试题27:二叉树的镜像 // 题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。 #include #include "BinaryTree.h" #include void MirrorRecursively(BinaryTreeNode *pNode)//递归算法(自下而上) { if ((pNode == nullptr) || (pNode->m_pLef... 阅读全文
posted @ 2019-03-07 17:04 深夜十二点三十三 阅读(178) 评论(0) 推荐(0)
摘要:// 面试题26:树的子结构 // 题目:输入两棵二叉树A和B,判断B是不是A的子结构。 #include struct BinaryTreeNode { double m_dbValue; BinaryTreeNode* m_pLeft; BinaryTreeNode* m_pRight; }; boo... 阅读全文
posted @ 2019-03-07 14:22 深夜十二点三十三 阅读(166) 评论(0) 推荐(0)
摘要:// 面试题25:合并两个排序的链表 // 题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按 // 照递增排序的。例如输入图3.11中的链表1和链表2,则合并之后的升序链表如链 // 表3所示。 #include #include "List.h" ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { if... 阅读全文
posted @ 2019-03-07 14:02 深夜十二点三十三 阅读(172) 评论(0) 推荐(0)
摘要:// 面试题24:反转链表 // 题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的 // 头结点。 #include #include "List.h" ListNode* ReverseList(ListNode* pHead) { ListNode* pReversedHead = nullptr;//设置三个节点变量,第一是已经被反转的头节点(原链表尾节... 阅读全文
posted @ 2019-03-07 13:43 深夜十二点三十三 阅读(187) 评论(0) 推荐(0)
摘要:// 面试题23:链表中环的入口结点 // 题目:一个链表中包含环,如何找出环的入口结点?例如,在图3.8的链表中, // 环的入口结点是结点3。 #include #include "List.h" ListNode* MeetingNode(ListNode* pHead)//鲁棒一:先确定有没有环,有的话先求得环中任意一个节点 { if (pHead == nullptr)/... 阅读全文
posted @ 2019-03-07 13:10 深夜十二点三十三 阅读(288) 评论(0) 推荐(0)
摘要:// 面试题22:链表中倒数第k个结点 // 题目:输入一个链表,输出该链表中倒数第k个结点。为了符合大多数人的习惯, // 本题从1开始计数,即链表的尾结点是倒数第1个结点。例如一个链表有6个结点, // 从头结点开始它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个结点是 // 值为4的结点。 //O(n)的解法:维护两个指针,让A走B前头,前K步,A到头,B就是解了,但是这个问题... 阅读全文
posted @ 2019-03-06 22:56 深夜十二点三十三 阅读(127) 评论(0) 推荐(0)
摘要:// 面试题21:调整数组顺序使奇数位于偶数前面 // 题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有 // 奇数位于数组的前半部分,所有偶数位于数组的后半部分。 #include void Reorder(int *pData, unsigned int length, bool(*func)(int)); bool isEven(int n); // ====... 阅读全文
posted @ 2019-03-06 22:36 深夜十二点三十三 阅读(236) 评论(0) 推荐(0)
摘要:// 面试题20:表示数值的字符串 // 题目:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如, // 字符串“+100”、“5e2”、“-123”、“3.1416”及“-1E-16”都表示数值,但“12e”、 // “1a3.14”、“1.2.3”、“+-5”及“12e+5.4”都不是 #include bool scanUnsignedInteger(const ch... 阅读全文
posted @ 2019-03-06 22:10 深夜十二点三十三 阅读(208) 评论(0) 推荐(0)
摘要:// 面试题19:正则表达式匹配 // 题目:请实现一个函数用来匹配包含'.'和'*'的正则表达式。模式中的字符'.' // 表示任意一个字符,而'*'表示它前面的字符可以出现任意次(含0次)。在本题 // 中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a" // 和"ab*ac*a"匹配,但与"aa.a"及"ab*a"均不匹配。 #include using ... 阅读全文
posted @ 2019-03-06 21:14 深夜十二点三十三 阅读(372) 评论(0) 推荐(0)
摘要:// 面试题18(二):删除链表中重复的结点 // 题目:在一个排序的链表中,如何删除重复的结点?例如,在图3.4(a)中重复 // 结点被删除之后,链表如图3.4(b)所示。 #include #include "List.h" using namespace std; void DeleteDuplication(ListNode** pHead)//注意有可能删除头结点,所以是** ... 阅读全文
posted @ 2019-03-06 20:43 深夜十二点三十三 阅读(260) 评论(0) 推荐(0)
摘要:// 面试题18(一):在O(1)时间删除链表结点 // 题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该 // 结点。 #include #include "List.h" void DeleteNode(ListNode** pListHead, ListNode* pToBeDeleted) { if (!pListHead || !pToBeDel... 阅读全文
posted @ 2019-03-06 20:03 深夜十二点三十三 阅读(399) 评论(0) 推荐(0)
摘要:// 面试题17:打印1到最大的n位数 // 题目:输入数字n,按顺序打印出从1最大的n位十进制数。比如输入3,则 // 打印出1、2、3一直到最大的3位数即999。 #include #include using namespace std; void PrintNumber(char* number); bool Increment(char* number); void Print... 阅读全文
posted @ 2019-03-06 19:34 深夜十二点三十三 阅读(421) 评论(0) 推荐(0)
摘要:// 面试题:数值的整数次方 // 题目:实现函数double Power(double base, int exponent),求base的exponent // 次方。不得使用库函数,同时不需要考虑大数问题。 #include #include using namespace std; bool g_InvalidInput = false;//使用全局变量作为错误处理方式 bool... 阅读全文
posted @ 2019-03-05 23:25 深夜十二点三十三 阅读(167) 评论(0) 推荐(0)
摘要:// 面试题:剪绳子 // 题目:给你一根长度为n绳子,请把绳子剪成m段(m、n都是整数,n>1并且m≥1)。 // 每段的绳子的长度记为k[0]、k[1]、……、k[m]。k[0]*k[1]*…*k[m]可能的最大乘 // 积是多少?例如当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此 // 时得到最大的乘积18。 #include #include // =======... 阅读全文
posted @ 2019-03-05 23:09 深夜十二点三十三 阅读(260) 评论(0) 推荐(0)
摘要:// 面试题:机器人的运动范围 // 题目:地上有一个m行n列的方格。一个机器人从坐标(0, 0)的格子开始移动,它 // 每一次可以向左、右、上、下移动一格,但不能进入行坐标和列坐标的数位之和 // 大于k的格子。例如,当k为18时,机器人能够进入方格(35, 37),因为3+5+3+7=18。 // 但它不能进入方格(35, 38),因为3+5+3+8=19。请问该机器人能够到达多少个格子?... 阅读全文
posted @ 2019-03-05 22:56 深夜十二点三十三 阅读(285) 评论(0) 推荐(0)
摘要:// 面试题:矩阵中的路径 // 题目:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有 // 字符的路径。路径可以从矩阵中任意一格开始,每一步可以在矩阵中向左、右、 // 上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入 // 该格子。例如在下面的3×4的矩阵中包含一条字符串“bfce”的路径(路径中的字 // 母用下划线标出)。但矩阵中不包含字符串“ab... 阅读全文
posted @ 2019-03-05 21:46 深夜十二点三十三 阅读(232) 评论(0) 推荐(0)

上一页 1 ··· 4 5 6 7 8 9 下一页