zoukankan      html  css  js  c++  java
  • 链表分割 牛客网 程序员面试金典 C++ Python

    链表分割 牛客网 程序员面试金典 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<x){
                    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
    
  • 相关阅读:
    MVC之路由规则 (自定义,约束,debug)
    MCV之行为
    mvc之页面强类型
    Jquery异步上传图片
    三层VS控制器
    Oracle 表分区
    C#编写的通过汉字得到拼音和五笔码
    MYSQL存储过程学习
    Sina App Engine(SAE)入门教程(9)- SaeMail(邮件)使用
    状态CSS
  • 原文地址:https://www.cnblogs.com/vercont/p/10210299.html
Copyright © 2011-2022 走看看