Swapping Nodes in a Linked List
给一个链表, 给一个数组k, 求交换开始第k个node和倒数第k个node的值.
这个题我看答案是扫了三次, 我用的stack
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
/** * 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; } } |