题解 | #牛的品种排序IV#

牛的品种排序IV

https://www.nowcoder.com/practice/bd828af269cd493c86cc915389b02b9f

题目考察的知识点:与链表有关的题基本都是插入,删除,交换顺序等,解决这些问题通常将链表的指针进行修改。

题目分析:这道题常规操作就是定义两个头结点,一个头插0结点,另一个头插1节点,然后将两个链表连接起来;也可以定义一个头结点,记录第一个0结点插入的位置,在头结点后面插0结点,在第一个0结点后插1结点,两种思路大致一样。

本题解析所用的编程语言:c++

ListNode* sortCowsIV(ListNode* head)
{
    // write code here
    ListNode newhead(-1);
    newhead.next = nullptr;
    ListNode* end = &newhead; //记录第一个0结点插入的位置
    int i = 1;

    ListNode* cur = head;
    while (cur)
    {
        ListNode* next = cur->next;
        if (cur->val == 0)
        {
            cur->next = newhead.next;
            newhead.next = cur;

            if (i)  //记录第一次0的位置
            {
                end = cur;
                --i;
            }
        }
        else
        {
            cur->next = end->next;
            end->next = cur;
        }
    }
    return newhead.next;
}

全部评论

相关推荐

09-17 19:25
已编辑
太原理工大学 游戏测试
叁六玖:公司名发我,我要这个HR带我打瓦
我的秋招日记
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

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