Most efficient method to check for range of numbers within number without duplicates

后端 未结 2 718
难免孤独
难免孤独 2020-12-11 11:34

Given a number n , a minimum number min , a maximum number max , what is the most efficient method to determine

  1. Numbe

2条回答
  •  清歌不尽
    2020-12-11 11:54

    Solution 1

    test using regex

    var min = 2;
    var max = 7;
    res = "";
    arr = [81, 35, 22, 45, 49]
    arr.push("");
    regex=new RegExp("[" + min + "-" + max + "](.)(?!=\1)", "g")
    var result = arr.reduce(function(a, b) {
      if (regex.test(a)) {
        res = res + a + " is true\n"
      } else {
        res = res + a + " is false\n"
      };
      return b
    });
    console.log(res)
    

    The reduce method is different in a sense that it is like a generator function like in python (produces output on the fly)

    Its simply loops through each elements in an array using a callback function. I cannot say how efficient is the reduce function.

    Nevertheless consider two elements in the array

    81                             35          
    ^
    take this value            take the result
    and do something           from the previous 
                               element and add it
                               to the result computed
                               for this element  
    

    further information https://msdn.microsoft.com/en-us/library/ff679975%28v=vs.94%29.aspx

    SOlution 2

    Using list to store value and their boolean

    var min = 2;
    var max = 7;
    res = [""];
    arr = [81, 35, 22, 45, 49]
    arr.push("");
    regex=new RegExp("[" + min + "-" + max + "](.)(?!=\1)", "g")
    var result = arr.reduce(function(a, b) {
      if (regex.test(a)) {
        res.push([a,true])
      } else {
        res.push([a,false])
      };
      return b
    });
    console.log(res)
    

提交回复
热议问题