提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
简单的链表题,但是不能小看,要细心的,不然就是无穷的debugQAQ
最近感觉题目越来越简单了,正在考虑要不要一天刷两道题捏~
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
示例 1:
输入:head = [1,2,3,4]
输出:[2,1,4,3]
示例 2:
输入:head = []
输出:[]
示例 3:
输入:head = [1]
输出:[1]
链表中节点的数目在范围 [0, 100] 内
0 <= Node.val <= 100
给链表加工头结,点然后画个草图自己转一下就行,没啥技术含量
过程中碰到的问题是
`Python3:AttributeError: ‘NoneType‘ object has no attribute ‘next‘`
报错的语句是
while(q.next):
因为填入测试的样例中p首次进入循环并不是为空的,所以就没有注意,但是好像还是应该判断一下p是否为None才能过,不然一直报错
改为如下就可以了:
while(q and q.next):
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def swapPairs(self, head: Optional[ListNode]) -> Optional[ListNode]:
#先造个头结点
head1=ListNode(val=0,next=head)
#双指针pq循环
p=head1 #指向头结点
q=head #指向首节点
while(q and q.next):
p.next=q.next #q的前一个元素指向q的后一个元素
temp=q.next.next #保存q的后一个元素的后一个元素
q.next.next=q #q的后一个元素指向q
q.next=temp #q指向后一个元素的后一个元素(交换前序列中)
p=p.next.next #移动指针
q=q.next
#返回
return head1.next
附:
https://leetcode.cn/problems/divide-two-integers/solution/wei-yun-suan-shi-chu-by-fyzj-rntc/
29. 两数相除