摘要: 题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是 阅读全文
posted @ 2017-12-25 09:53 jeysin 阅读(89) 评论(0) 推荐(0) 编辑
摘要: 题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数 思路:用一个辅助栈动态维护最小值 1 class Solution { 2 public: 3 void push(int value) { 4 sta1.push(value); 5 if(sta2.size()==0 阅读全文
posted @ 2017-12-23 18:09 jeysin 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 思路:由外向里,按圈打印,考 阅读全文
posted @ 2017-12-23 17:41 jeysin 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 题目描述 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 思路:前序遍历和前序对称遍历,考虑NULL节点,遍历结果一样,则为对称二叉树。 1 bool isSame(TreeNode *pRoot1, TreeNode *pRoot2) 阅读全文
posted @ 2017-12-23 16:18 jeysin 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5思路:遍历交换左右节点 class Solution { public: void 阅读全文
posted @ 2017-12-23 15:46 jeysin 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 思路:两个递归函数,一个负责遍历树A;另一个负责判断由树A中某一个节点作为根节点的子树是否和树B结构一样 1 bool isSubTree(TreeNode *pRoot1, TreeNode *p 阅读全文
posted @ 2017-12-23 15:14 jeysin 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则 解法1:非递归解法 1 ListNode* Merge(ListNode* pHead1, ListNode* pHead2) 2 { 3 if(pHead1==NULL)return pHead2 阅读全文
posted @ 2017-12-23 11:18 jeysin 阅读(80) 评论(0) 推荐(0) 编辑
摘要: 题目描述 输入一个链表,反转链表后,输出链表的所有元素。 思路:三个指针,遍历反转 1 ListNode* ReverseList(ListNode* pHead) 2 { 3 if(pHead==NULL)return NULL; 4 ListNode *p1=pHead->next; 5 pHe 阅读全文
posted @ 2017-12-23 10:43 jeysin 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 题目描述 一个链表中包含环,请找出该链表的环的入口结点 解法1:环的入口节点一定是入度为2的节点,故遍历链表,统计节点入度数,入度为2即为环入口节点 class Solution { public: ListNode* EntryNodeOfLoop(ListNode* pHead) { ListN 阅读全文
posted @ 2017-12-23 10:19 jeysin 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 题目描述 输入一个链表,输出该链表中倒数第k个结点。 ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) { if(pListHead==NULL || k==0)return NULL; ListNode *p=pListHea 阅读全文
posted @ 2017-12-22 22:57 jeysin 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分。 思路:不考虑奇数与偶数的数字相对顺序的话,可以实现O(n)的时间复杂度,O(1)的空间复杂度 1 void AdjustArr(int *arr, int leng 阅读全文
posted @ 2017-12-22 21:49 jeysin 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 思路:要保持奇数和偶数的相对位置不变并且达到O(n)的时间复杂度的话,必须要用O(n)的辅助空间。 1 class 阅读全文
posted @ 2017-12-22 21:32 jeysin 阅读(432) 评论(0) 推荐(0) 编辑
摘要: 题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。 思路:小数点或者前面有一个整型,或者后面 阅读全文
posted @ 2017-12-22 20:59 jeysin 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 题目描述 请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均 阅读全文
posted @ 2017-12-22 16:31 jeysin 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 思路:两个指针一前一后,遍历找重复节点,特殊情况考虑重复的节点是头节点 class Solution { publi 阅读全文
posted @ 2017-12-22 11:56 jeysin 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 思路:两种解法,一种当做大数问题处理,大数加法,进位;另一种当做排列问题处理,递归。 阅读全文
posted @ 2017-12-22 10:38 jeysin 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 题目描述 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 思路:考虑特殊情况,0的0次方,0的负数次方;利用递归,时间复杂度为O(logn)的解法,提高次方计算的效率;利用位运算来判断奇偶,提高效率 class Solution { p 阅读全文
posted @ 2017-12-22 10:09 jeysin 阅读(87) 评论(0) 推荐(0) 编辑
摘要: 题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 思路:n&(n-1)可将n的二进制中最后一个1变为0 class Solution { public: int NumberOf1(int n) { int count=0; while(n) { n=n&(n-1); ++ 阅读全文
posted @ 2017-12-21 16:56 jeysin 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 题目描述 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+ 阅读全文
posted @ 2017-12-21 15:21 jeysin 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d e e 矩阵 阅读全文
posted @ 2017-12-21 12:11 jeysin 阅读(137) 评论(0) 推荐(0) 编辑