1. 程式人生 > >C#LeetCode刷題之#21-合併兩個有序連結串列(Merge Two Sorted Lists)

C#LeetCode刷題之#21-合併兩個有序連結串列(Merge Two Sorted Lists)

問題

將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。 

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

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

Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.

Input: 1->2->4, 1->3->4

Output: 1->1->2->3->4->4

示例

public class Program {

    public static void Main(string[] args) {
        var A = "this apple is sweet";
        var B = "this apple is sour";

        var res = UncommonFromSentences(A, B);
        ShowArray(res);

        Console.ReadKey();
    }

    private static void ShowArray(IList<string> array) {
        foreach(var domain in array) {
            Console.Write($"{domain} ");
        }
        Console.WriteLine();
    }

    private static string[] UncommonFromSentences(string A, string B) {
        string[] wordA = A.Split(' ');
        string[] wordB = B.Split(' ');
        var dicA = new Dictionary<string, int>();
        var dicB = new Dictionary<string, int>();
        var res = new List<string>();
        foreach(var word in wordA) {
            if(dicA.ContainsKey(word)) {
                dicA[word]++;
            } else {
                dicA[word] = 1;
            }
        }
        foreach(var word in wordB) {
            if(dicB.ContainsKey(word)) {
                dicB[word]++;
            } else {
                dicB[word] = 1;
            }
        }
        foreach(var kvp in dicA) {
            if(kvp.Value == 1 && !dicB.ContainsKey(kvp.Key)) {
                res.Add(kvp.Key);
            }
        }
        foreach(var kvp in dicB) {
            if(kvp.Value == 1 && !dicA.ContainsKey(kvp.Key)) {
                res.Add(kvp.Key);
            }
        }
        return res.ToArray();
    }

}

以上給出1種演算法實現,以下是這個案例的輸出結果:

sweet sour

分析:

顯而易見,以上演算法的時間複雜度為: O(n)

相關推薦

C#LeetCode#21-合併有序連結串列Merge Two Sorted Lists

問題 將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。  輸入:1->2->4, 1->3->4 輸出:1->1->2->3->4->4 Merge

leetcode21. 合併有序連結串列C解答

題目: 將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。  示例: 輸入:1->2->4, 1->3->4 輸出

合併有序連結串列注意空指標異常

將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。  要注意判斷兩個結點是否為空結點,不然會出現空指標異常 /** * Definition for singly-linked list. * public class

leetcode 21. 合併有序連結串列 C語言版

將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。  示例: 輸入:1->2->4, 1->3->4 輸出:1->1->2->3->4->4 可以通過一次遍歷同時掃描

LeetCodeEasy篇合併有序陣列

題目 Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note: The

LeetCode 21. 合併有序連結串列 Merge Two Sorted ListsC語言

題目描述: 將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。 示例: 輸入:1->2->4, 1->3->4 輸出:1->1->2->3->4->4

LeetCode 21.合併有序連結串列 C++程式碼實現

題目描述: 將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。  示例: 輸入:1->2->4, 1->3->4 輸出:1->1->2->3->4->4

Leetcode日記:21. 合併有序連結串列(PYTHON)

將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。 示例: 輸入:1->2->4, 1->3->4 輸出:1->1->2->3->4->4 L1=ListNo

leetcode 21. 合併有序連結串列 C++版

將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。  示例: 輸入:1->2->4, 1->3->4 輸出:1->1->2->3->4->4 分析:   首

LeetCode 21 合併有序連結串列--python

將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。  示例: 輸入:1->2->4, 1->3->4 輸出:1->1->2->3->4->4 # Definiti

LeetCode21 合併有序連結串列

將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。 示例: 輸入:1->2->4, 1->3->4 輸出:1->1->2->3->4->4 解題思路: 1

Leetcode演算法Java全解答--21. 合併有序連結串列

Leetcode演算法Java全解答–21. 合併兩個有序連結串列 文章目錄 Leetcode演算法Java全解答--21. 合併兩個有序連結串列 題目 想法 結果 總結 程式碼 我的答案

leetcode 21.合併有序連結串列

合併兩個有序連結串列 本人大四實習生,水平有限。有錯望海涵。 思路 可使用遞迴。比較兩個連結串列的頭結點,值小的當頭結點 程式碼 /** * Definition for singly-linked list. * public class

LeetCode 21. 合併有序連結串列 Python

將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。  示例: 輸入:1->2->4, 1->3->4 輸出:1->1->2->3->4->4 # Defini

LeetCode-21. 合併有序連結串列

題目 將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。 示例: 輸入:1->2->4, 1->3->4 輸出:1->1->2->3->4->4 解題

LeetCode 21 ——合併有序連結串列

1. 題目 2. 解答 新建一個帶有哨兵結點的連結串列,依次比較兩個有序連結串列的結點值,將較小值的結點插入到新連結串列後面。直到其中一個比較完畢,將另一個連結串列剩餘的結點全部放到新連結串列最後面

LeetCode 21. 合併有序連結串列(Merge Two Sorted Lists)

題目描述 將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。 示例: 輸入:1->2->4, 1->3->4 輸出:1-

[LeetCode]21. 合併有序連結串列 —— javascript

21. 合併兩個有序連結串列 將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。 var mergeTwoLists = function (l1, l2) { var lHead = new

LeetCode21. 合併有序連結串列

邏輯比較簡單, 但是感覺對連結串列的掌握程度不夠,需要重新學習一遍連結串列的基本操作。 class Solution { public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ListNode* Hea

合併有序連結串列LeetCode 21. Merge Two Sorted Lists

雙指標連結串列解法: /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x)