电子商城网站开发要多少钱,wordpress整站搬家教程,室内设计工作室排名,备案老域名1.1两两交换链表中的节点
给你一个链表#xff0c;两两交换其中相邻的节点#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题#xff08;即#xff0c;只能进行节点交换#xff09; 输入#xff1a;[1,2,3,4] 输出#xff1a;[2,1,4,3…1.1两两交换链表中的节点
给你一个链表两两交换其中相邻的节点并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题即只能进行节点交换 输入[1,2,3,4] 输出[2,1,4,3]
递归
程序反复调用自身即是递归。递归是使用栈来实现的每当我们调用一次函数关于该函数的调用以及返回地址就会被放到栈顶上。参考知乎
代码
class Node:def __init__(self,val):self.valvalself.nextNoneclass LinkList:def __init__(self):self.headNonedef add(self,val): #头插法实现链表new_nodeNode(val)new_node.nextself.headself.headnew_nodedef printLinkList(self):curentself.headwhile curent:print(f{curent.val}, end)curentcurent.nextclass question1:def swapPairs(self,head):if not head or not head.next: #递归终止条件没有节点或者只有一个节点return headnewHeadhead.nexthead.nextself.swapPairs(newHead.next) #需要交换的结点newHead.nexthead #将后面的结点提前作为头结点return newHeaddef test():q question1()l1 LinkList()l1.add(4)l1.add(3)l1.add(2)l1.add(1)resultLinkList()result.headq.swapPairs(l1.head)result.printLinkList()test()1.2 反转字符串
编写一个函数将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。原地修改输入数组、不给另外的数组分配额外的空间,使用 O(1) 的额外空间。 输入s [“h”,“e”,“l”,“l”,“o”] 输出[“o”,“l”,“l”,“e”,“h”]
class question1:def reverseString(self,l):for i in range (len(l)1): #len(l)1,整除2l[i],l[-i-1]l[-i-1],l[i] #交换首尾对应位置数据return lq question1()
print(q.reverseString([h,l,l,o]))