從零開始演算法之路 合併兩個有序鍊錶

2021-09-23 02:03:47 字數 1209 閱讀 6410

前言:小白入門題解,演算法大佬可以直接跳過此部落格(大佬輕噴哈)

題源:leetcode(

題目描述:

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。 

示例:

輸入:1->2->4, 1->3->4

輸出:1->1->2->3->4->4

解決方案:遞迴套路

//合併兩個有序鍊錶 

listnode* solution::mergetwolists(listnode *l1, listnode *l2) else

}

完整**:

#includeusing namespace std;

struct listnode

};class solution

//去重函式

listnode* deleteduplicates(listnode* head) ;

//輸入函式

void input();

//輸出 鍊錶函式

void output();

//獲得頭節點

listnode* gethead()

//合併兩個有序鍊錶

listnode * mergetwolists(listnode *l1, listnode *l2);

};//輸入函式 初始化鍊錶

void solution::input()

} // 輸出鍊錶函式

void solution::output()

printf("\n輸出鍊錶結束!");

} //去重函式

listnode* solution::deleteduplicates(listnode *head)

//使first指向的下乙個節點指向second指向的節點

first->next = second;

// 使first指向的節點指向 second指向的節點

first = second;

} return head;

}//合併兩個有序鍊錶

listnode* solution::mergetwolists(listnode *l1, listnode *l2) else

}int main()

從零開始演算法之路 有序鍊錶去重

前言 小白入門題解,演算法大佬可以直接跳過此部落格 大佬輕噴哈 題源 leetcode 題目描述 給定乙個排序鍊錶,刪除所有重複的元素,使得每個元素只出現一次。示例 1 輸入 1 1 2 輸出 1 2示例 2 輸入 1 1 2 3 3 輸出 1 2 3解決方案一 遞迴套路 解題思路 找終止條件 當h...

演算法 合併兩個有序鍊錶

有兩種方法,迭代和遞迴。迭代 不帶頭結點 node merge node head1 node head2 else 當前排序好的鍊錶的末尾節點 node pcurrent head while p1 null p2 null else 還有一方沒有遍歷完的情況 if p1 null pcurren...

演算法 合併兩個有序鍊錶

1.迭代,新建乙個哨兵節點,通過它的next指標指向串聯起兩個鍊錶 比較 l1 和 l2哪乙個比較小,讓哨兵節點的next指向比較小的節點 哨兵節點 l1 l2依次後推,直到又乙個鍊錶為空 如果 l1 為空,則哨兵節點指向l2 注意返回值為哨兵節點的next,因為哨兵節點的第乙個值是隨意給的 cla...