2.2 Return Kth to Last

来源:互联网 发布:未注册双拼域名 编辑:程序博客网 时间:2024/06/11 23:54

Eg: 1–>2–>3–>4–>5–>6–>7–>NULL
4th node to last should be: 4.

Just a simple two pointer problem.

    int kthNodeToLast(ListNode* head, int k){        if(!head || !k) return -1;        ListNode* fast = head;        ListNode* slow = head;        while(fast){            while (k){                if(!fast) return -1;// k is larger than linked list's length.                fast = fast->next;                --k;            }            if(!fast) return slow->val; // k is equal to list's length;            else{ //k is smaller than list's length;                slow = slow->next;                fast = fast->next;            }        }        return slow->val;    }
    int main(int argc, const char * argv[]) {        // insert code here...        ListNode * head = nullptr;        for ( int i = 7; i > 0; i-- ) {            insert(head, i);        }        cout << "List: ";        printList(head);        int k = 5;        cout << k<<"th node from last (Iterative) : ";        int node = kthNodeToLast(head, k);        if ( node ) {            cout << node << endl;        } else {            cout << "NULL NODE\n";        }        return 0;    }
0 0
原创粉丝点击