合并排序数组:LeetCode 提交的输出与 LeetCode Playground 和 Visual Studio [C#] 不同

问题描述 投票:0回答:2

尝试使用 for 和 while 循环解决 88. 使用 C# 合并排序数组。 Leetcode 指示将正确的输出保存在 [nums1] 数组中,而不是返回输出。这些是合并排序数组的假设和输入。

  1. 提示:

  2. 我的代码:


public void Merge(int[] nums1, int m, int[] nums2, int n) {
        if (m == 0)
        {
            Console.WriteLine("Num 1 Before: {0}", nums1[0]);
            nums1 = (int[])nums2.Clone();
            Console.WriteLine("Num 1 After: {0}", nums1[0]);
        }
        
        else if ( n != 0 )
        {
            int arrTwoIt = 0;
            for ( int i = m; i <m+n; i++)
            {
                nums1[i] = nums2[arrTwoIt++];
            }
            
            int arrOneIt = 0;
            arrTwoIt = m;
            while (arrOneIt < m)
            {
                if (nums1[arrOneIt] > nums1[arrTwoIt])
                {
                    int leftItemTemp = nums1[arrOneIt];
                    nums1[arrOneIt] = nums1[arrTwoIt];
                    nums1[arrTwoIt++] = leftItemTemp;
                }
                
                arrOneIt++;
            }
        }
    }
  1. 输入:{0}、0、{1}、1
  2. 输出:LeetCode Playground:

  1. 输出:视觉工作室:

  1. LeetCode提交输出:

我不知道从那里去哪里。我不确定我错过了什么。如有任何帮助,我们将不胜感激。

c# arrays sorting merge
2个回答
0
投票

您可以先合并两个数组并简单地调用

Array.Sort()
方法。如果您不想使用任何内置方法,您可以使用自定义逻辑进行排序。

public void Merge(int[] nums1, int m, int[] nums2, int n) {
    
    for(int i = 0; i < nums2.Length; i++){
        
        nums1[i + m] = nums2[i];
        
    }
    Array.Sort(nums1);
}

0
投票
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Console1.Core.Algorithms
{

    class Merge_Sorted_Array
    {


        static void Main(string[] args)
        {
            int[] nums1 = { 1, 2, 3, 0, 0, 0 }; //here you can put your values
            int[] nums2 = { 2, 5, 6 }; //here you can put your values

            int count = 0;

            for (int i = 0; i < nums1.Length; i++)
            {
                count++;
            }

            for (int i = 0; i < nums2.Length; i++)
            {
                count++;
            }

            int[] nums3 = new int[count];
            for (int i = 0; i < nums1.Length; i++)
            {
                nums3[i] = nums1[i];
            }
            int d = nums1.Length;
            for (int i = 0; i < nums2.Length; i++)
            {
                nums3[d] = nums2[i];
                d++;
            }


            List<int> arrayList =  new List<int>();

            for (int i = 0; i < nums3.Length; i++)
            { 
                if (nums3.ElementAt(i).Equals(0))
                {
                    continue;
                }
                else
                {
                    arrayList.Add(nums3.ElementAt(i));
                }
            }

            arrayList.Sort();

            int[] ans = new int[arrayList.Count];

            for (int i = 0; i < arrayList.Count; i++)
            {
                ans[i] = arrayList.ElementAt(i);
            }

            for (int i = 0; i < ans.Length; i++)
            {
                Console.WriteLine(ans.ElementAt(i));
            }
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.