1.回顾之前的五道题目
第一道题目
=======================================================================
开始今天的刷题:(今天刷四道题目,加油哦!)
6. 交换链表中的相邻结点
自己按照迭代方法写出来的。方法很简单,需要用到哑节点。至于递归方法,等刷到递归算法的时候,再回头看这个题目。
/**
* 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 dummyHead = new ListNode(0, head);
ListNode tempNode = dummyHead;
while(tempNode.next != null && tempNode.next.next != null){
//这个地方是&&,就是表明后边需要有两个节点才会发生下边的交换
//存储tempNode后边的两个节点
ListNode node1 = tempNode.next;
ListNode node2 = tempNode.next.next;
tempNode.next = node2;
node1.next = node2.next;
node2.next = node1;
//将tempNode放到node1的位置
tempNode = node1;
}
return dummyHead.next;
}
}
7. 链表求和
需要使用栈来完成,如果 遇到逆序的问题,可以考虑使用栈能不能解决。