Абсолютно, вы можете переписать его следующим образом и ожидать тех же результатов:
LinkedListNode getKthNode(LinkedListNode head, int k) {
while (k > 0 && head != null) {
head = head.next;
k--;
}
return head;
}
Вот пример некоторых тестов, которые я провел:
Сначала начал с создания класса LinkedListNode
:
private static class LinkedListNode {
public LinkedListNode next;
private int value;
public LinkedListNode(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
Затем я создал 3 LinkedListNode
объектов, дав им значения 100, 200, 300.
public static void main(String[] args) {
LinkedListNode first = new LinkedListNode(100);
LinkedListNode second = new LinkedListNode(200);
LinkedListNode third = new LinkedListNode(300);
first.next = second;
second.next = third;
third.next = null;
System.out.println(getKthNode(first, 1).getValue()); // 200
}
Если вы попробуете те же самые тесты, используя вашу оригинальную функцию, вы получитетот же ответ.Оно написано так, как будто оно пытается выразить.