JSFiddle - React, Tailwind, and code Playground

HTML

<div id="div"></div>

JavaScript

var s = [1,4,5,7,8,12]
/*
for (var i=0; i<20000; i++)
  s[i] = Math.floor(Math.random()*40000)
*/
s.sort(function(a,b){return a - b})

var len = s.length, halfRange = (s[len-1] - s[0]) / 2

while (s[len-1] - s[len-2] > halfRange){
  s.pop()
  len--
  halfRange = (s[len-1] - s[0]) / 2
}

while (s[1] - s[0] > halfRange){
  s.shift()
  len--
  halfRange = (s[len-1] - s[0]) / 2
}

var n = s.length,
    middle = Math.floor((s[n-1] - s[0]) / 2),
    largestl = 0,
    largestr = 0,
    s0 = s[0],
    sn = s[n-1],
    l = 1

while (largestl < middle){
  var tmp = s[l++] - s[0]
  if (tmp <= middle) largestl = tmp
  else break
}

l = n - 2
while (largestr < middle){
  var tmp = sn - s[l--]
  if (tmp <= middle) largestr = tmp
  else break
}

var largest = Math.max(largestl, largestr)

var maxS = s[n-1],
      maxD = 0,
      max = 0,
      hCount = new Array(largest),
      hLast = new Array(largest),
      best

var start = new Date().getTime()

for (var i=1; i<n; i++){
  for (var j=i-1; j>=0; j--){
    var d = s[i] - s[j],
          numLeft = n - i,
          maxPossible = (maxS - s[i]) / d + 2,
          ok = numLeft + 2 >= max && maxPossible >= max

    if (d > middle || (d > maxD && !ok))
      break

    if (hLast[d]){
      if (hLast[d] == s[j]){
        hLast[d] += d
        hCount[d]++
        if (hCount[d] > max){
          max = hCount[d]
          best = {len: hCount[d], d: d, last: hLast[d]}
        }
      }
      else if (ok){
        if (d > maxD) maxD = d
        hLast[d] = s[i]
        hCount[d] = 2
      }
    }
    else if (ok){
      if (d > maxD) maxD = d
      hLast[d] = s[i]
      hCount[d] = 2
    }
  }
}

var end = new Date().getTime(),
      sec = (end-start)/1000

document.getElementById('div').innerHTML += 'tableCount:<br>' + JSON.stringify(hCount)
document.getElementById('div').innerHTML += '<br><br>tableLast:<br>' + JSON.stringify(hLast)
document.getElementById('div').innerHTML +=...