검지 Offer16 - 두 정렬된 체인 테이블 결합

제목 설명


두 개의 단조롭고 점차적으로 증가하는 체인표를 입력하고 두 개의 체인표가 합성된 체인표를 출력한다. 물론 우리는 합성된 체인표가 단조롭고 줄지 않는 규칙을 만족시켜야 한다.

문제 풀이 사고방식


반복과 반복 두 가지 사고방식:
  • 우리가 합병할 때 우리는 두 개의 체인 시계 중의 값이 비교적 작은 머리 결점을 이용하여 이미 합병된 체인 시계에 연결한 후에 두 체인 시계의 나머지 결점은 여전히 정렬된 것이기 때문에 합병의 절차는 이전의 절차와 같다.이것이 바로 전형적인 귀속 과정이다. 귀속 함수를 정의하여 완성자가 합병 과정을 할 수 있다
  • 우리는 두 개의 질서정연한 체인 테이블을 반복할 수 있으며, 시종 작은 값으로 우리의 목표 체인 테이블에 삽입하여 어떤 체인 테이블이 반복적으로 완성될 때까지 반복할 수 있다.마지막으로 두 개의 체인 테이블에 아직도 하나의 체인 테이블이 있을 수 있고 데이터가 처리해야 한다는 것을 주의해야 한다

  • 코드 구현

    import java.util.Scanner;
    public class Problem16 {
        public static class ListNode {
            int val;
            ListNode next;
            ListNode(int val) {
                this.val = val;
            }
        }
        public static ListNode Merge(ListNode l1,ListNode l2) {
            if (l1 == null) return l2;
            if (l2 == null) return l1;
            ListNode head = null;
            if (l1.val <= l2.val){
                head = l1;
                head.next = Merge(l1.next, l2);
            } else {
                head = l2;
                head.next = Merge(l1, l2.next);
            }
            return head;
        }
        public static ListNode Merge1(ListNode l1,ListNode l2) {
            ListNode head = new ListNode(-1);
            head.next = null;
            ListNode root = head;
            while(l1 != null && l2 != null) {
                if(l1.val < l2.val){
                    head.next = l1;
                    head = l1;
                    l1 = l1.next;
                }
                else {
                    head.next = l2;
                    head = l2;
                    l2 = l2.next;
                }
            }
            // , , 。
            if(l1 != null) {
                head.next = l1;
            }
            if(l2 != null) {
                head.next = l2;
            }
            return root.next;
        }
        public static void main(String[] args) {
            Scanner cin = new Scanner(System.in);
        }
    }
    

    좋은 웹페이지 즐겨찾기