既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
博客主页:安然无虞
作者认证:2021年博客新星Top2
咱的口号:🌹小比特,大梦想🌹
作者请求:由于博主水平有限,难免会有错误和不准之处,我也非常渴望知道这些错误,恳请铁汁批评斧正。
种一棵树最好的时间是十年前,其次是现在。
各位,共勉。
面试题:回文链表
原题链接:回文链表
题目描述:
对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。
示例:
1->2->2->1
返回:true解题思路
之所以讲解前面两题,实际上都是为这道题准备的,本题的解题步骤是:
- 找出链表的中间位置;
- 逆置后半段
- 最后从头依次比较即可
代码执行:
//回文链表 class PalindromeList { public: //判断中间结点 struct ListNode\* middleNode(struct ListNode\* A) { struct ListNode\* slow = A, \*fast = A; while(fast && fast->next) { slow = slow->next; fast = fast->next->next; } return slow; } //反转后半部分 struct ListNode\* reverseAfter(struct ListNode\* mid) { struct ListNode\* newHead = NULL, \*cur = mid; while(cur) { struct ListNode\* next = cur->next; cur->next = newHead; newHead = cur; cur = next; } return newHead; } bool chkPalindrome(ListNode\* A) { // write code here //先判断中间结点 struct ListNode\* mid = middleNode(A); //再反转后半部分 struct ListNode\* rHead = reverseAfter(mid); while(A && rHead) { if(A->val != rHead->val) { return false; } else { A = A->next; rHead = rHead->next; } } return true; } };
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
sdn.net/topics/618668825)**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!