classListNode(object):def__init__(self, x):
self.val = x
self.next=NoneclassLinkList:def__init__(self):
self.head=NonedefinitList(self, data):
self.head = ListNode(data[0])
r=self.head
p = self.head
for i in data[1:]:
node = ListNode(i)
p.next= node
p = p.nextreturn r
defconvert_list(self,head):
ret =[]if head ==None:return
node = head
while node !=None:
ret.append(node.val)
node = node.nextreturn ret
classSolution(object):defreverseKGroup(self, head, k):if head isNone:returnNone
index =0
lead, last =0,0
pos = head
temp = ListNode(-1)
temp.next= head
head = temp
start = head
_________________;return head.nextdefreverseList(self, head, end):
pos = head.next
last = end
next_start = pos
while pos != end:
head.next= pos
last_pos = pos
pos = pos.next
last_pos.next= last
last = last_pos
return next_start
# %%
l = LinkList()
head =[1,2,3,4,5]
l1 = l.initList(head)
s = Solution()print(l.convert_list(s.reverseKGroup(l1, k =2)))
2,程序代码
# -*- coding: utf-8 -*-"""
Created on Tue Dec 28 11:35:01 2021
Function:
@author: 小梁aixj
"""classListNode(object):def__init__(self, x):
self.val=x
self.next=NoneclassLinkList:def__init__(self):
self.head=NonedefinitList(self, data):
self.head=ListNode(data[0])
r=self.head
p=self.head
for i in data[1:]:
node=ListNode(i)
p.next=node
p=p.nextreturn r
defconvert_list(self,head):
ret=[]if head ==None:return
node=head
while node !=None:
ret.append(node.val)
node=node.nextreturn ret
classSolution(object):defreverseKGroup(self, head, k):if head isNone:returnNone
index =0
last=0
pos=head
temp=ListNode(-1)
temp.next=head
head=temp
start=head
while pos isnotNone:if index%k == k-1:
last=pos.next
start=self.reverseList(start, last)
pos=start
pos=pos.next
index +=1return head.nextdefreverseList(self, head, end):
pos=head.next
last=end
next_start=pos
while pos != end:
head.next=pos
last_pos=pos
pos=pos.next
last_pos.next=last
last=last_pos
return next_start
#%%
l = LinkList()
head =[1,2,3,4,5]
l1 = l.initList(head)
s = Solution()print(l.convert_list(s.reverseKGroup(l1, k =2)))
3,运行结果
二,文本左右对齐
1,程序简介
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
示例 1:
输入:nums1 = [1,3], nums2 = [2]
输出:2
解释:合并数组 = [1,2,3] ,中位数 2
示例 2:
输入:nums1 = [1,2], nums2 = [3,4]
输出:2.5
解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5
示例 3:
输入:nums1 = [0,0], nums2 = [0,0]
输出:0
示例 4:
输入:nums1 = [], nums2 = [1]
输出:1
示例 5:
输入:nums1 = [2], nums2 = []
输出:2
提示:
nums1.length == m
nums2.length == n
0 <= m <= 1000
0 <= n <= 1000
1 <= m + n <= 2000
-106 <= nums1[i], nums2[i] <= 106
进阶
你能设计一个时间复杂度为 O(log (m+n)) 的算法解决此问题吗?
以下程序实现了这一功能,请你填补空白处内容:
import math
from typing import List
classSolution:deffindMedianSortedArrays(self, nums1: List[int],
nums2: List[int])->float:
nums1Size =len(nums1)
nums2Size =len(nums2)
na = nums1Size + nums2Size
ns =[]
i =0
j =0
m =int(math.floor(na /2+1))whilelen(ns)< m:
n =Noneif i < nums1Size and j < nums2Size:if nums1[i]< nums2[j]:
n = nums1[i]
i +=1else:
n = nums2[j]
j +=1elif i < nums1Size:
n = nums1[i]
i +=1elif j < nums2Size:
n = nums2[j]
j +=1
ns.append(n)
d =len(ns)if na %2==1:return ns[d -1]else:return _____________________;# %%
s = Solution()print(s.findMedianSortedArrays([1,3],[2]))
2,程序代码
# -*- coding: utf-8 -*-"""
Created on Tue Dec 28 11:35:42 2021
Function:
@author: 小梁aixj
"""import math
from typing import List
classSolution:deffindMedianSortedArrays(self, nums1: List[int], nums2: List[int])->float:
nums1Size =len(nums1)
nums2Size =len(nums2)
na = nums1Size + nums2Size
ns =[]
i =0
j =0
m =int(math.floor(na /2+1))whilelen(ns)< m:
n =Noneif i < nums1Size and j < nums2Size:if nums1[i]< nums2[j]:
n = nums1[i]
i +=1else:
n = nums2[j]
j +=1elif i < nums1Size:
n = nums1[i]
i +=1elif j < nums2Size:
n = nums2[j]
j +=1
ns.append(n)
d =len(ns)if na %2==1:return ns[d -1]else:return(ns[d -1]+ ns[d -2])/2.0# %%
s = Solution()print(s.findMedianSortedArrays([1,3],[2]))#2print(s.findMedianSortedArrays([1,2],[3,4]))#2.5