leetcode第24题

简介: 解法一 迭代首先为了避免单独讨论头结点的情况,一般先申请一个空结点指向头结点,然后再用一个指针来遍历整个链表。先来看一下图示:

image.png

top24

给定一个链表,然后两两交换链表的位置。

解法一 迭代

首先为了避免单独讨论头结点的情况,一般先申请一个空结点指向头结点,然后再用一个指针来遍历整个链表。

先来看一下图示:

image.png

image.pngimage.png

point 是两个要交换结点前边的一个位置。

publicListNodeswapPairs(ListNodehead) {
ListNodedummy=newListNode(0);
dummy.next=head;
ListNodepoint=dummy;
while (point.next!=null&&point.next.next!=null) { 
ListNodeswap1=point.next;
ListNodeswap2=point.next.next;
point.next=swap2;
swap1.next=swap2.next;
swap2.next=swap1;
point=swap1;
    }
returndummy.next;
}

时间复杂度:O(n)。

空间复杂度:O(1)。

自己开始没有想出递归的算法,每次都会被递归的简洁吸引。另外,感觉链表的一些题,只要画图打打草稿,搞清指向关系,一般不难。


相关文章
|
3月前
leetcode-1447:最简分数
leetcode-1447:最简分数
33 0
|
3月前
|
C++ Python
leetcode-283:移动零
leetcode-283:移动零
19 0
|
3月前
leetcode-1219:黄金矿工
leetcode-1219:黄金矿工
35 0
|
3月前
|
消息中间件 Kubernetes NoSQL
LeetCode 3、28、1351
LeetCode 3、28、1351
|
10月前
单链表反转 LeetCode 206
单链表反转 LeetCode 206
53 0
|
11月前
顺手牵羊(LeetCode844.)
好多同学说这是双指针法,但是我认为叫它顺手牵羊法更合适
47 0
leetcode 283 移动零
leetcode 283 移动零
36 0
LeetCode 354. Russian Doll Envelopes
给定一些标记了宽度和高度的信封,宽度和高度以整数对形式 (w, h) 出现。当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样。 请计算最多能有多少个信封能组成一组“俄罗斯套娃”信封(即可以把一个信封放到另一个信封里面)。
63 0
LeetCode 354. Russian Doll Envelopes
|
测试技术
一和零(LeetCode-474)
一和零(LeetCode-474)
110 0
一和零(LeetCode-474)
leetcode
在排序数组中查找元素的第一个和最后一个位置