每K个一组反转链表

每K个一组反转链表

https://www.nowcoder.com/questionTerminal/a632ec91a4524773b8af8694a51109e7?answerType=1&f=discussion

每K个一组反转链表

答案来自答主

输入描述:
第一行输入是链表的值第二行输入是K的值,K是大于或等于1的整数输入形式为:1 2 3 4 52
输出描述:
当 k = 2 时,应当输出:2 1 4 3 5当 k = 3 时,应当输出:3 2 1 4 5当k=6时,应当输出:1 2 3 4 5
输入
1 2 3 4 5
2
输出
2 1 4 3 5
确定k有几组,然后用reverse循环翻转每组,
reverse翻转cishu = k//2次,举例3,4时,翻转1,2次,很合理。
链接:https://www.nowcoder.com/questionTerminal/a632ec91a4524773b8af8694a51109e7?f=discussion
#必须3才可以过#raw_input()python2!

def reverse(array, left, right, k):
    cishu = k // 2
    while cishu > 0:
        array[left], array[right] = array[right], array[left]
        left += 1
        right -= 1
        cishu -= 1

array = list(map(int, input().split()))
k = int(input())
beishu = len(array) // k
left = 0
right = k-1
for i in range(beishu):
    reverse(array, left, right, k)
    left += k
    right += k

print(" ".join(str(i) for i in array))

arr = list(map(int,input().split()))
k = int(input())
def reverse(arr,left,right):
    while left<right:
        arr[left],arr[right]=arr[right],arr[left]
        left+=1
        right-=1

group_num = len(arr)//k
left,right = 0,k-1
for i in range(group_num):
    reverse(arr,left,right)
    left+=k
    right+=k


#arr = ' '.join([str(i) for i in arr])
arr = ' '.join(map(str,arr))
print(arr)
#print(k)
全部评论

相关推荐

ArisRobert:统一解释一下,第4点的意思是,公司按需通知员工,没被通知到的员工是没法去上班的,所以只要没被通知到,就自动离职。就是一种比较抽象的裁员。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务