簡體   English   中英

LeetCode MergeTwoSortedLists21 第 18 行:錯誤 CS1503:參數 1:無法從 'ListNode' 轉換為 'System.Collections.Generic.LinkedList<int> '</int>

[英]LeetCode MergeTwoSortedLists21 Line 18: error CS1503: Argument 1: cannot convert from 'ListNode' to 'System.Collections.Generic.LinkedList<int>'

以下代碼在 VS 2022 中編譯和工作。它是在 netcoreapp3.1 控制台應用程序下構建的。

復制到 LeetCode 時,單擊“運行代碼”按鈕時收到以下錯誤:

第 18 行:字符 48:錯誤 CS1503:參數 1:無法從“ListNode”轉換為“System.Collections.Generic.LinkedList”(在驅動程序.cs 中)

LeetCode 是否使用了舊的 C# 版本,這可能導致錯誤? 任何建議將不勝感激。

public class Solution {
    public LinkedList<int> MergeTwoLists(LinkedList<int> list1, LinkedList<int> list2) {
        
            LinkedList<int> answerList = new LinkedList<int>(); 

            LinkedListNode<int> list1CurrentNode = list1.First; // This is line 18, which is causing the error
            LinkedListNode<int> list2CurrentNode = list2.First;

            LinkedListNode<int> answerListNode = answerList.First;

          //  Console.WriteLine(list1.First.Value);
          //  Console.WriteLine(list2.First.Value); 
          //  Console.WriteLine(list1CurrentNode.Value);
          //  Console.WriteLine(list2CurrentNode.Value);


            if (list1.First == null && list2.First == null)
            {
                answerList = null;
                return answerList;  
            }

            if (((list1.First.Value == 0) || (list2.First.Value == 0)) && ((list1 == null || list2 == null)))
            {
                answerList.First.Value = 0;
                return answerList;
            }

            if (((list1 == null) || (list2 == null)) && ((list1.First.Value == 0 || list2.First.Value == 0)))
            {
                answerList.First.Value = 0;
                return answerList;
            }


            while (list1CurrentNode != null && list2CurrentNode != null)
            {
                if ((list1CurrentNode == list1.First && list2CurrentNode == list2.First) && (list1.First.Value >= list2.First.Value))
                {
                    answerList.AddFirst(list2CurrentNode.Value);
                    answerListNode = answerList.First;
                  //  Console.WriteLine(answerListNode.Value); 
                    answerList.AddAfter(answerListNode, list1CurrentNode.Value);
                  //  Console.WriteLine(answerList.First.Value);
                  //  Console.WriteLine(answerList.Last.Value);

                }

                else if ((list1CurrentNode == list1.First && list2CurrentNode == list2.First) && (list1.First.Value < list2.First.Value))
                {
                    answerList.AddFirst(list1CurrentNode.Value);
                    answerListNode = answerList.First;
                  //  Console.WriteLine(answerListNode.Value); 
                    answerList.AddAfter(answerListNode, list2CurrentNode.Value);
                  //  Console.WriteLine(answerList.First.Value);
                  //  Console.WriteLine(answerList.Last.Value);
                }

                else if (list1CurrentNode.Value >= list2CurrentNode.Value)
                {
                    answerList.AddLast(list2CurrentNode.Value);
                    answerList.AddLast(list1CurrentNode.Value);
                }

                else if (list2CurrentNode.Value > list1CurrentNode.Value)
                {
                    answerList.AddLast(list1CurrentNode.Value);
                    answerList.AddLast(list2CurrentNode.Value);
                }

                list1CurrentNode = list1CurrentNode.Next;
                list2CurrentNode = list2CurrentNode.Next;   

            }
            
           // Console.WriteLine(String.Join(" ", answerList));
            return answerList;
    
        
        
    
    

     
     static void Main(string[] args)
        {
           
          LinkedList<int> firstList = new LinkedList<int>();
            LinkedList<int> secondList = new LinkedList<int>();

           firstList.AddFirst(5);
            firstList.AddLast(6);
            firstList.AddLast(2);
            secondList.AddFirst(7);
            secondList.AddLast(1);
            secondList.AddLast(9);
            
            
            Solution solution = new Solution();
            solution.MergeTwoLists(firstList, secondList);

            
        }
     
     
     
     
     }
}

您在 Leet Code 之外測試了您的代碼,但也更改了 function 的簽名。 Leet Code 提供以下模板代碼:

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     public int val;
 *     public ListNode next;
 *     public ListNode(int val=0, ListNode next=null) {
 *         this.val = val;
 *         this.next = next;
 *     }
 * }
 */
public class Solution {
    public ListNode MergeTwoLists(ListNode list1, ListNode list2) {
        
    }
}

你應該使用它。 但是在您的代碼中,您使用的是LinkedList ,用於 arguments 和返回類型。 當您更改數據類型時,Leet Code 測試無法通過。

為了讓您開始,在您的離線版本中,您應該有如下所示的驅動程序代碼:

static void Main(string[] args)
{
    ListNode firstList = new ListNode(5,
                         new ListNode(6,
                         new ListNode(2)));
    ListNode secondList = new ListNode(7,
                          new ListNode(1,
                          new ListNode(9)));
    Solution solution = new Solution();
    ListNode mergedList = solution.MergeTwoLists(firstList, secondList);
    // Output the returned result           
    for (ListNode node = mergedList; node != null; node = node.next) {
        Console.Write("{0} ", node.val);
    }
    Console.WriteLine();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM