剑指offer--面试题15--相关
感受:清晰的思路是最重要的!!!
题目:求链表中间节点
ListNode* MidNodeInList(ListNode* pHead) { if(pHead == NULL) return NULL; ListNode* pNode1 = pHead; ListNode* pNode2 = pHead; unsigned int step = 1; while(pNode2->m_pNext != NULL) { pNode2 = pNode2->m_pNext; step++; if((step & 0x1) == 1) pNode2 = pNode2->m_pNext; } return pNode2; }
依然两个指针进行一次遍历即可。。。:一个向前走两步,另一个向前走一步
针对链表问题,若一个指针的遍历无法解决问题,则可以尝试用两个指针解决,基本规则为:让其中一个指针遍历的快些,或者先向前运动k步
清醒时做事,糊涂时读书,大怒时睡觉,独处时思考; 做一个幸福的人,读书,旅行,努力工作,关心身体和心情,成为最好的自己
-- 共勉