Leetcode Java Insert Greatest Common Divisors in Linked List

업데이트:

문제

Link

코드

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {

  public ListNode insertGreatestCommonDivisors(ListNode head) {
    if (head.next != null) {
      ListNode node = head;
      while (node.next != null) {
        ListNode temp = new ListNode(this.getGcd(node.val, node.next.val), node.next);
        node.next = temp;
        node = temp.next;
      }
    }
    return head;
  }

  private int getGcd(int m, int n) {
    if (n == 0) {
      return m;
    } else {
      return this.getGcd(n, m % n);
    }
  }

}

결과

Link

설명

  1. head의 각 노드 사이에 최대 공약수를 넣어주는 문제이다.

  2. head의 next 노드가 null이 아닌, 두 노드 이상인 경우만 아래를 수행한다.
    • node의 next 노드가 null이 아닐 때 까지 node의 val 값과 node.next 노드의 val 값을 이용한 최대 공약수를 두 노드 사이에 이어준다.
  3. 반복이 완료되면 각 노드 사이에 최대 공약수가 들어간 head를 주어진 문제의 결과로 반환한다.

소스

Sample Code는 여기에서 확인 가능합니다.

댓글남기기