• Smallest unused ID


    http://www.codewars.com/kata/smallest-unused-id

    Description:

    Hey awesome programmer!

    You've got much data to manage and of course you use zero-based and non-negative ID's to make each data item unique!

    Therefore you need a method, which returns the smallest unused ID for your next new data item...

    Go on and code some pure awesomeness!

    自己写了一段超级烂的

      Console.WriteLine("Length = {0}", ids.Length);
                ids = ids.OrderBy(x => x).ToArray();
                foreach (var number in ids)
                {
                    Console.Write("{0} ", number);
                }
                Console.WriteLine();
    
                int count = ids.Count();
                int result = ids.Min() - 1;
                if (result != -1)
                {
                    return 0;
                }
                bool loopAllNumber = true;
                for (int i = 0; i < count; i++)
                {
                    result++;
                    if (result != ids[i])
                    {
                        loopAllNumber = false;
                        break;
                    }
                }
                Console.WriteLine("after for loop,result = {0}", result);
                if (loopAllNumber)
                {
                    result++;
                }
                return result;

    其他人写的,使用了Linq的Except

       var max=ids.Max();
       var excepts= Enumerable.Range(0, max).Except(ids);
               return excepts.Count() == 0 ? max + 1 : excepts.Min();

    //
    // 摘要:
    // 通过使用默认的相等比较器对值进行比较生成两个序列的差集。
    //
    // 参数:
    // first:
    // 一个 System.Collections.Generic.IEnumerable<T>,将返回其不在 second 中的元素。
    //
    // second:
    // 一个 System.Collections.Generic.IEnumerable<T>,如果它的元素也出现在第一个序列中,则将导致从返回的序列中移除这些元素。
    //
    // 类型参数:
    // TSource:
    // 输入序列中的元素的类型。
    //
    // 返回结果:
    // 包含两个序列元素的差集的序列。
    //
    // 异常:
    // System.ArgumentNullException:
    // first 或 second 为 null。
    public static IEnumerable<TSource> Except<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second);

  • 相关阅读:
    DRF JWT认证基础
    Shell简单脚本
    DockerFile案例
    Shell基础知识
    DockerFile基础知识
    tensorflow
    使用cv2将图片分割成相等的部分
    序列化心得
    python正则化表达式
    python--匿名函数(lambda)
  • 原文地址:https://www.cnblogs.com/chucklu/p/4842755.html
Copyright © 2020-2023  润新知