摘要: 题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的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) 编辑