LeetCode_21: 두 개의 질서 있 는 링크 를 합 칩 니 다.
8750 단어 알고리즘
예시:
입력: 1 - > 2 - > 4, 1 - > 3 - > 4 출력: 1 - > 1 - > 2 - > 3 - > 4 - > 4
제 가 생각 하 는 것 은 아주 간단 합 니 다. 두 개의 체인 시 계 를 옮 겨 다 니 고 하나씩 새로운 체인 시계 에 넣 습 니 다. 시간 복잡 도 는 두 개의 링크 의 길이 이 고 공간 복잡 도 는 두 개의 링크 의 길이 입 니 다.
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode head = new ListNode(0);
ListNode cur = head;
while(l1 != null && l2 != null){
int value;
if(l1.val < l2.val){
value = l1.val;
l1 = l1.next;
}else{
value = l2.val;
l2 = l2.next;
}
cur.next = new ListNode(value);
cur = cur.next;
}
while(l1 != null){
cur.next = new ListNode(l1.val);
l1 = l1.next;
cur = cur.next;
}
while(l2 != null){
cur.next = new ListNode(l2.val);
l2 = l2.next;
cur = cur.next;
}
return head.next;
}
}
그리고 공식 적 인 해답 을 보 니 다른 것 은 나 보다 훨씬 간단 하 다. 비록 두 개의 링크 를 옮 겨 다 녔 지만 그 는 새로운 노드 가 아니 라 낡은 링크 의 노드 를 현재 링크 에 걸 었 다. 공간 을 절약 할 뿐만 아니 라 여러 줄 의 코드 도 절약 했다. 너무 형편없다.
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode head = new ListNode(0);
ListNode pre = head;
while(l1 != null && l2 != null){
if(l1.val < l2.val){
pre.next = l1;
l1 = l1.next;
}else{
pre.next = l2;
l2 = l2.next;
}
pre = pre.next;
}
pre.next = l1 ==null ? l2 : l1;
return head.next;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Codility Lesson3】FrogJmpA small frog wants to get to the other side of the road. The frog is currently located at position X and wants to get to...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.