티스토리 뷰

반응형

 

30일 챌린지 Middle of the Linked List 문제 입니다.

문제 난이도는 Easy 입니다.

 

- 문제

 

- 풀이

class Solution {
    public ListNode middleNode(ListNode head) {
        ListNode currentNode = head;
        int length = 1;
        while(currentNode.next != null){
            length++;
            currentNode = currentNode.next;
        }
        int count = length/2;
        currentNode = head;
        while(count!=0){
            count--;
            currentNode = currentNode.next;
        }        
        return currentNode;
    }
}

 

이 문제는 최적화 되었는지 조금은 아쉬운 문제입니다.

시간 복잡도는 최대 O(2N) 정도라고 할 수 있을 것 같습니다.

node를 모두 확인하면서 node의 개수를 저장한 뒤에 개수의 반을 다시 확인하면서 해당 node를 return 합니다.

 

조금 더 생각해보았지만 더 좋은 방법은 떠오르지 않네요. 

이상 끝!

반응형

'알고리즘 > LeetCode 공부' 카테고리의 다른 글

[LeetCode] Java - Move Zeroes  (0) 2020.04.06
[LeetCode] Java - Maximum Subarray  (1) 2020.04.05
[LeetCode] Java - Happy Number  (0) 2020.04.02
[LeetCode] Java - Single Number  (0) 2020.04.01
[leetCode] Java - Backspace String Compare  (0) 2020.03.25
댓글