2017-12-30 32 views
-1

단일 링크 된 목록이 주어지면 n % k == 0 인 끝에서 첫 번째를 어떻게 찾을 수 있습니까? n은 목록의 요소 수입니다. & k는 정수입니다. n = 19, k = 3이면 16 번째 노드를 반환해야합니다. 한 번에 할 수 있습니까?끝에서 링크 된 목록의 모듈러 노드를 찾습니다. 가능하면 한 번에 할 수 있습니까?

+1

'n = 9'및 'k = 3'이면 16 번째 노드가 없습니다. 'n'의 정의에 따라 총 9 개의 노드가 있습니다. 또한, 표현식'n % k'는 노드에 의존하지 않는 상수이므로 "n % k == 0"인 노드가 무엇을 의미하는지 명확하지 않습니다. 'n % k'는 0이거나, 그렇지 않습니다. –

+0

@Charu Agarwal 질문이 명확하지 않으니 수정하십시오. 그러면 저희가 도와 드리겠습니다. – zenwraight

+0

안녕하세요! 정말 미안해. 19시 1 분을 놓 쳤어. 실제로는 19 살이야. 제발 도와 줄 수있어? –

답변

1

이 질문에서 마지막 n % k == 0은 17 번째 노드가 아니라 16 번째 노드임을 의미합니다.

1-> 2-> 3-> 4-> 5-> 6-> 7-8> 9-10> 11-12> 13-> 14-> 15 -> 16 -> 17 -> 18 -> 19

카운팅 시작 : 19는 끝에서 1 위입니다. 따라서 1 % 3! = 0

18은 끝에서 2 번째 위치에 있습니다. 따라서 2 % 3! = 0

17은 끝에서부터 세 번째 위치에 있습니다. 그래서 3 % 3 == 0.

17은 끝에서 n % k == 0 노드입니다.

예, 우리는 이것을 한 번에 찾을 수 있습니다. 이것에 관해서는 두 개의 참조가 헤드이고 다른 하나는 mod_Node입니다. 일단으로부터 가리키는 그 시간 당신 mod_Node에서 널 (null)에 도달하여 헤드 일단 헤드mod_Node 이동 시작 "N 개의 %의 ​​K == 0 후 K 위치까지 네 헤드 기준 이동 " 노드.

public Node modNode(Node head,int k) 
{ 
    Node mod_Node=head; 

    int i=0; 

    while(head!=null) 
    { 
     if(i<k) 
      i++;   
     else 
      mod_Node=mod_Node.next; 
     head=head.next; 
    } 
    return mod_Node; 
}