Lc879_連結串列的中間結點
阿新 • • 發佈:2020-07-09
//給定一個帶有頭結點 head 的非空單鏈表,返回連結串列的中間結點。 // // 如果有兩個中間結點,則返回第二個中間結點。 // // // // 示例 1: // // 輸入:[1,2,3,4,5] //輸出:此列表中的結點 3 (序列化形式:[3,4,5]) //返回的結點值為 3 。 (測評系統對該結點序列化表述是 [3,4,5])。 //注意,我們返回了一個 ListNode 型別的物件 ans,這樣: //ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.next = //NULL. // // // 示例 2: // // 輸入:[1,2,3,4,5,6] //輸出:此列表中的結點 4 (序列化形式:[4,5,6]) //由於該列表有兩個中間結點,值分別為 3 和 4,我們返回第二個結點。 // // // // // 提示: // // // 給定連結串列的結點數介於 1 和 100 之間。 // // Related Topics 連結串列 package leetcode.editor.cn; import com.example.demo.ArrayConvertLinkedList; import com.example.demo.ListNode; //Java:連結串列的中間結點 public class P876MiddleOfTheLinkedList { public static void main(String[] args) { Solution solution = new P876MiddleOfTheLinkedList().new Solution(); // TO TEST int[] array1 = {1,2,3,4,5}; ListNode head1 = ArrayConvertLinkedList.arrayToNode(array1); ListNode res = solution.middleNode(head1); ArrayConvertLinkedList.printNode(res); } //leetcode submit region begin(Prohibit modification and deletion) /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode middleNode(ListNode head) { int len = 0; ListNode curr = head; while (curr != null) { len++; curr = curr.next; } int middle = len / 2 + 1;; ListNode curr1 = head; int currPosition = 1; while (curr1 != null) { if (currPosition == middle) { return curr1; } else { currPosition++; curr1 = curr1.next; } } return null; } } //leetcode submit region end(Prohibit modification and deletion) }