Swapping Nodes in a Linked List
给一个链表, 给一个数组k, 求交换开始第k个node和倒数第k个node的值.
这个题我看答案是扫了三次, 我用的stack
/**
* 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 {
ListNode first = null;
ListNode last = null;
public ListNode swapNodes(ListNode head, int k) {
ListNode dummy = head;
Stack<ListNode> st = new Stack<>();
for(int i = 0; i < k - 1; i++) {
st.add(head);
head = head.next;
}
first = head;
while(head != null){
st.add(head);
head = head.next;
}
for(int i = 0; i < k - 1; i++) {
st.pop();
}
last = st.peek();
int tmp = first.val;
first.val = last.val;
last.val = tmp;
return dummy;
}
}