链表 python 牛客_链表分割 牛客网 程序员面试金典 C++ Python

这是一个关于链表操作的编程问题,要求编写C++和Python代码实现将链表按给定值x分割,使得所有小于x的节点位于大于或等于x的节点之前,同时保持原有数据顺序不变。这个问题涉及到链表遍历和节点操作,是数据结构与算法领域常见的题目。
摘要由CSDN通过智能技术生成

链表分割 牛客网 程序员面试金典 C++ Python

题目描述

编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前

给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针。注意:分割以后保持原来的数据顺序不变。

c++

/*

* struct ListNode {

* int val;

* struct ListNode *next;

* ListNode(int x) : val(x), next(NULL) {}

* };*/

class Partition {

public:

//run:4ms memory:480k

ListNode* partition(ListNode* pHead, int x){

if(pHead==NULL) return NULL;

ListNode *pNode = pHead;

ListNode *small = new ListNode(0);

ListNode *big = new ListNode(0);

ListNode *pSmall = small;

ListNode *pBig = big;

while(pNode){

if(pNode->val

pSmall->next = pNode;

pNode = pNode->next;

pSmall = pSmall->next;

pSmall->next = NULL;

}else{

pBig->next = pNode;

pNode = pNode->next;

pBig = pBig->next;

pBig->next = NULL;

}

}

pSmall->next = big->next;

free(big);

pNode = small->next;

free(small);

return pNode;

}

};

Python

# -*- coding:utf-8 -*-

# class ListNode:

# def __init__(self, x):

# self.val = x

# self.next = None

class Partition:

#run:94ms memeory:5688k

def partition(self, pHead, x):

if None == pHead: return None

pNode = pHead

small = ListNode(0)

big = ListNode(0)

pSmall = small

pBig = big

while pNode:

if pNode.val < x:

pSmall.next = pNode

pNode = pNode.next

pSmall = pSmall.next

pSmall.next = None

else:

pBig.next = pNode

pNode = pNode.next

pBig = pBig.next

pBig.next = None

pSmall.next = big.next

return small.next

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值