在C#语言

时间:2018-01-03 03:13:15

标签: c# asp.net

我被问到以下问题要编程,下面是我创建的代码。有没有更好的方法呢?谢谢,

实施ClosestToZero方法,使温度接近零,属于数组ts。

•如果ts为空,则返回0(零)

•如果两个数字接近零,则将正整数视为接近零(例如-5和5,返回5) 输入:

•温度始终以浮点数表示,范围为-273 to 5526

namespace ConsoleApp5
{
    class Program
    {
        static void Main(string[] args)
        {
            double[] ts = { 7, 12, -2, 8, 1 };
            var result = closetozero(ts);
            Console.WriteLine(result);
        }
        public static double closetozero(double[] ts)
        {
            int targetNumber = 0;
            var nearest = ts.OrderBy(x => Math.Abs((long)x - targetNumber)).First();
            return nearest;
        }
    }
}

6 个答案:

答案 0 :(得分:0)

正如Sweeper所说,定义“更好”。

就运行时而言:抛弃LINQ,写出循环。问题是你的方法构建一个值列表然后对它们进行排序(O(n log n)。一个简单的循环没有内存分配并且在O(n)时间内运行。

另外,我认为+5在你的代码中比-5更受欢迎,这使得它明显错误。

答案 1 :(得分:0)

“更好”的方式是使用ForEach并将最接近的零存储起来,并考虑+/-。没有理由对整个数组进行排序。

答案 2 :(得分:0)

尝试一下:

using System;
using System.IO;
using System.Text;
using System.Collections;
using System.Collections.Generic;

class Solution
{
    static void Main(string[] args)
    {
        int n = int.Parse(Console.ReadLine()); 
        string[] inputs = Console.ReadLine().Split(' ');
        int closest=0;
        if(n>0)
        {
          closest=int.Parse(inputs[0]);
          for (int i = 1; i < n; i++)
          {
            int t = int.Parse(inputs[i]); 
            if(Math.Abs(closest-0)>Math.Abs(t-0))
            {closest=t;}
            else if(Math.Abs(closest-0) == Math.Abs(t-0))
            {
                if(closest-Math.Abs(closest)==0 && t-Math.Abs(t)==0)
                {closest=closest;}
                else if(closest-Math.Abs(closest)==0)
                {closest=closest;}
                else if(t-Math.Abs(t)==0)
                {closest=t;}
            }
         }
       }
          Console.WriteLine(closest);
      }
   }

答案 3 :(得分:0)

public static double ClosestToZero(double[] ts)
{

    if(ts == null || ts.LongLength ==0 )
        return 0;

    double a = ts[0];
    double b;
    for(int i = 0; i <= ts.LongLength-1; i++){
        if(Math.Abs(a) > Math.Abs(ts[i])){
            a = ts[i];
        }
        else if(Math.Abs(a) == Math.Abs(ts[i]))
        {  
            a = a > ts[i] ? a : Maths.Abs(ts[i]); 
        }
    }

    return a;

}

答案 4 :(得分:-1)

试试这个:

sudo apt-get install --reinstall mongodb

答案 5 :(得分:-1)

const hex = crc.toString(16).padStart(8, '0')