题解 | #双指针——链表的奇偶重排#

链表的奇偶重排

https://www.nowcoder.com/practice/02bf49ea45cd486daa031614f9bd6fc3

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 *	ListNode(int x) : val(x), next(nullptr) {}
 * };
 */
/*第一个结点位置是奇数,第二个是偶数,初始化两个指针p1指向头节点,p2指向头节点的下一个结点。
那么将p1指向p2的后一个结点,也就是偶节点位置,p1后移一位;
p2指向p1的后一个结点,也就是奇节点位置,p2后移一位,一次类推
注意空节点单独判断, ListNode *p2=head->next;会报错*/
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param head ListNode类 
     * @return ListNode类
     */
    ListNode* oddEvenList(ListNode* head) {
        // write code here
        if(head == nullptr) return head;
        ListNode *p1 = head;
        ListNode *p2=head->next;
        ListNode *ymm = p2;
        while (p2!=nullptr && p2->next !=nullptr) {
            p1->next = p2->next;
            p1 = p1->next;
            p2->next = p1->next;
            p2= p2->next;
        }
        p1 ->next = ymm;
        return head;
    }
};

全部评论

相关推荐

好在哪里了?我请问了?
_hengheng:很好啊,我看旁边同事都入职了都有工作
点赞 评论 收藏
分享
鬼迹人途:你去投一投尚游游戏,服务器一面,第一个图算法,做完了给你一个策略题,你给出方案他就提出低概率问题,答不上当场给你挂
点赞 评论 收藏
分享
白火同学:能。我当初应届沟通了1200,收简历50,面试10左右吧,加油投吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务