每日一题
文章平均质量分 56
最初的素白
这个作者很懒,什么都没留下…
展开
-
每日一题---day5
基础题:1、删除一个无头单链表的非尾结点思路:一般单链表结点的删除需要知道要删结点的前一个结点然后进行删除,但现在是无头单链表即不能从头结点开始遍历,寻找它的前一个结点,此时已知的是要删结点的位置,可利用交换数值来删除;代码:void RemoveNode(ListNode* pnode) { assert(pnode); ListNode* next = pnode->_next; ...原创 2018-01-23 14:15:00 · 150 阅读 · 0 评论 -
每日一题---day3--1-17
基础题:判断链表是否带环?思路:代码实现:bool HaveLoop(ListNode* l) { if(l == NULL) return false; ListNode* fast = l; ListNode* slow = l; while(fast && fast->_next) { fast = (fast->_next)->_n...原创 2018-01-18 16:58:47 · 175 阅读 · 0 评论 -
每日一题---day4
基础题: 1、判断两个链表是否相交,若相交,求交点(假设链表不带环) 思路: 代码: ListNode* Intersect(ListNode* l1,ListNode* l2) { if(l1==l2)//若两链表相同,或都为空 return l1; size_t length1 = 0 ; size_t length2 = 0原创 2018-01-23 11:59:53 · 192 阅读 · 0 评论 -
每日一题 ---day2 --1-16
基础题:逆置/反转单链表,要求只遍历一次链表 解题思路:定义三个指针: 代码: void Reverse(ListNode*& l) { assert(l); ListNode* cur = l; ListNode* tmp = NULL; ListNode* next = NULL; while(cur) { n原创 2018-01-16 17:47:06 · 138 阅读 · 0 评论 -
每日一题---day6
基础题:1、两个栈实现一个队列思路:栈的特点:后进先出队列的特点:先进先出两个栈可将一个栈用于入数据,另一个用于出数据;代码:#define _CRT_SECURE_NO_WARNINGS #include<stack> #include<cassert> template <class T> class myqueue { public: void Push...原创 2018-01-28 13:11:22 · 199 阅读 · 0 评论 -
每日一题---day8
基础题: 元素出栈、入栈顺序的合法性。如:入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1),则合法。 入栈的序列(1,2,3,4,5),出栈序列(4,5,2,3,1),则不合法。 思路:栈的性质是后进先出,但入栈的同时也可进行出栈操作 代码: bool IsLegal(const int* in,size_t inlength,const int* out,si原创 2018-01-28 15:38:08 · 146 阅读 · 0 评论 -
每日一题---day7
基础题: 实现一个栈Stack,要求Push(出栈)、Pop(入栈),Min(返回最小值的操作)的时间复杂度为O(1) 代码:#include template class Stack { public: void Push(T x) { if(min.empty()) { min.push(x); s.push(x); } else原创 2018-01-28 16:28:26 · 194 阅读 · 0 评论 -
每日一题 ---day1--1-15
基础题:合并两个有序单链表,合并以后的单链表依然有序;方法一、ListNode* MergeList(ListNode* l1,ListNode* l2) //合并有序单链表 { ListNode* newlist = NULL; if(l1 == NULL) return l2; if(l2 == NULL) return l1; if(l1->_data <...原创 2018-01-16 11:57:44 · 328 阅读 · 0 评论