六六力扣刷题链表之两两交换链表中的节点

“持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第31天,点击查看活动详情

前言

之前小六六一直觉得自己的算法比较菜,算是一个短板吧,以前刷题也还真是三天打鱼,两台晒网,刷几天,然后就慢慢的不坚持了,所以这次,借助平台的活动,打算慢慢的开始开刷,并且自己还会给刷的题总结下,谈谈自己的一些思考,和自己的思路等等,希望对小伙伴能有所帮助吧,也可以借此机会把自己短板补一补,希望自己能坚持下去呀

贪心

数组

题目

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

输入: head = [1,2,3,4]
输出: [2,1,4,3]

image.png

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode swapPairs(ListNode head) {
          ListNode dum = new ListNode(0);
        dum.next = head;
        ListNode curr = dum;
        while (curr.next != null && curr.next.next != null) {
            ListNode node1 = curr.next;
            ListNode node2 = curr.next.next;
            curr.next=node2;
            node1.next=node2.next;
            node2.next=node1;
            curr=node1;
        }
        
        return dum.next;

    }
}

其实这个的思路就是如下

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

上面就是整个流程了

结束

好了,今天就到这了,链表的题目还是需要多做吧,大家加油,我是小六六,三天打鱼,两天晒网!

猜你喜欢

转载自juejin.im/post/7113560521743761439