日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

LintCode Python 简单级题目 96.链表划分

發布時間:2024/9/5 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LintCode Python 简单级题目 96.链表划分 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原題描述:

?

給定一個單鏈表和數值x,劃分鏈表使得所有小于x的節點排在大于等于x的節點之前。

你應該保留兩部分內鏈表節點原有的相對順序。

?

您在真實的面試中是否遇到過這個題?? Yes

?

樣例

給定鏈表?1->4->3->2->5->2->null,并且 x=3

返回?1->2->2->4->3->5->null

?

標簽? 兩根指針?鏈表

?

題目分析:

添加兩個指針,分別指向第一個大于等于X的第一個節點和小于X的第一個節點,

實際情況就是第N個節點大于等于X時,N-1個節點必然就是小于X;

由于可能節點第一個值就大于X,此時不存在N-1個節點,所以在原鏈表前新增一個節點,用于初始化鏈表循環。

此時算法復雜度O(n)。

?

""" Definition of ListNode class ListNode(object):def __init__(self, val, next=None):self.val = valself.next = next """ class Solution:"""@param head: The first node of linked list.@param x: an integer@return: a ListNode"""def partition(self, head, x):# write your code hereif head is None or head.next is None: return headnode = ListNode(-999999)node.next = headhead = nodefollow = headpre = head# 找到第一個值大于x的節點while follow is not None and follow.val < x:pre = followfollow = follow.next# 所有節點都小于x,直接返回原headif follow is None: return head.next# 遍歷鏈表,此時pre是follow的上一個節點while follow.next is not None:if follow.next.val < x:# 刪除原節點other = follow.nextfollow.next = follow.next.next# 將其值插入到pre之后tmp = pre.nextother.next = tmppre.next = otherpre = pre.nextcontinuefollow = follow.nextreturn head.next

?

轉載于:https://www.cnblogs.com/bozhou/p/6945210.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的LintCode Python 简单级题目 96.链表划分的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。