Kth Node From Middle

Modified code
 avatar
unknown
plain_text
a year ago
1.9 kB
2
Indexable
/**
 * Definition for singly-linked list.
 * class ListNode {
 *     public int val;
 *     public ListNode next;
 *     ListNode(int x) { val = x; next = null; }
 * }
 */
public class Solution {
    public static ListNode insertBegin(ListNode head2,int x){
        ListNode temp = new ListNode(x);
        temp.next = head2;
        return temp;
    }
    public static int lenLL(ListNode A){
        ListNode curr = A;
        int length = 0;
        while(curr != null){
            length++;
            curr = curr.next;
        }
        return length;
    }
    public static int solve(ListNode A, int B) {
        ListNode curr = A;
        int lenOfLL = lenLL(A);
        int midPos = (lenOfLL / 2) + 1;
        
        int pos = 1;
        while(curr != null){
            if(pos == midPos){
                curr.next = null;
                break;
            }
            else{
                curr = curr.next;
                pos++;
                continue;
            }
            
        }
        
        ListNode head2 = null;
        ListNode curr2 = A;
        while(curr2 != null){
            head2 = insertBegin(head2,curr2.val);
            curr2 = curr2.next;
        }
        int finalVal = 0;
        if(B < pos){
            ListNode curr3 = head2;
            int newPos = 1;
            while(curr3 != null){
                if(newPos == (B + 1)){
                    finalVal = curr3.val;
                    break;
                    //return curr3.val;
                }
                else{
                    curr3 = curr3.next;
                    newPos++;
                    continue;
                }
            }
        }
        else if(B >= pos){
            finalVal = -1;
            //return - 1;
        }
        return finalVal;
    }
}