![](/img/trans.png)
[英]Trying to convert list into array yields "error CS1503: Argument 1: cannot convert from 'System.Collections.Generic.List<int>' to 'System.Array' "
[英]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.