3.2 체인 테이블의 귀속(3)

1860 단어

올가미

  • 체인 테이블 문제는 두 가지 해법이 있다.귀속포인터 2개
  • 주의점

  • 없음
  • 카탈로그

  • 두 정렬을 합친 체인표(귀속)
  • 끝에서 끝까지 체인 테이블 인쇄(귀속)
  • 체인 테이블에서 중복된 결점(귀속, 두 바늘) 삭제
  • 두 정렬의 체인 테이블 병합


    두 개의 단조로운 체인 테이블을 입력하고 두 개의 체인 테이블을 합성한 체인 테이블을 출력한다. 물론 우리는 합성된 체인 테이블이 단조로운 규칙을 만족시켜야 한다.
    public ListNode Merge(ListNode list1,ListNode list2) {
        if (list1 == null) return list2;
        if (list2 == null) return list1;
        if (list1.val <= list2.val) {
            list1.next = Merge(list1.next, list2);
            return list1;
        } else {
            list2.next = Merge(list1, list2.next);
            return list2;
        }
    }
    

    끝에서 끝까지 체인 테이블 인쇄하기


    체인 테이블을 입력하십시오. 체인 테이블의 노드별 값을 끝에서 끝까지 출력합니다.
  • 최우해: 귀속법은 코드량이 가장 적고 본 문제는 창고로 실현할 수 있으며 데이터 구조를 사용하지 않으면 귀속으로 실현할 수 있다.사실 본질적으로도 창고로 이루어졌지만 창고가 JVM 방법 창고로 바뀌었다.
  • private ArrayList res = new ArrayList<>();
    public ArrayList printListFromTailToHead(ListNode listNode) {
        if (listNode != null) {
            printListFromTailToHead(listNode.next);
            res.add(listNode.val);
        }
        return res;
    }
    

    체인 테이블에서 중복된 결점 삭제


    정렬된 체인 테이블에 중복된 결점이 존재합니다. 이 체인 테이블에 중복된 결점을 삭제하십시오. 중복된 결점은 보류하지 않고 체인 헤더 바늘로 되돌아갑니다.예를 들어 체인 테이블 1->2->3->3->4->4->5 처리 후 1->2->5
    public ListNode deleteDuplication(ListNode pHead) {
        if (pHead == null || pHead.next == null) {
            return pHead;
        }
        if (pHead.val == pHead.next.val) {
            ListNode pNode = pHead.next;
            while (pNode.next != null && pHead.val == pNode.next.val) {
                pNode = pNode.next;
            }
            return deleteDuplication(pNode.next);
        } else {
            pHead.next = deleteDuplication(pHead.next);
            return pHead;
        }
    }
    

    좋은 웹페이지 즐겨찾기