Codility - FrogRiverOne

smu*_*mus 0 javascript

我已经用谷歌搜索并询问了人们这个问题,但无法理解其含义。我知道我的解决方案不正确,但我希望它可以帮助(它在 JS 上):

let C = [1, 3, 1, 4, 2, 3, 5, 4],
  Y = 4;

function solution(X, A) {

  var leaves = [];
  var i = 0;
  var result = -1;

  for (i = 0; i < A.length; i++) {
    if (typeof leaves[A[i]] == 'undefined') {
      leaves[A[i]] = i;
    }
  }

  if (leaves.length <= X) {
    return -1;
  }

  for (i = 1; i <= X; i++) {
    if (typeof leaves[i] == 'undefined') {
      return -1;
    } else {
      result = Math.max(result, leaves[i]);
    }
  }

  return result;
}

console.log(solution(Y, C));
Run Code Online (Sandbox Code Playgroud)

我不需要任务的解决方案,我只需要它更清晰的解释,即我必须做什么来解决它。

小智 8

使用 Set() 的简单 100% 解决方案。由于 Set 只能包含唯一值,因此您可以简单地遍历数组 A,将这些值添加到 Set 中,直到 Set 的大小等于整数 X,此时数组键就是解决方案。

function solution(X, A) {

    let holdValues = new Set();
    for(i=0;i<A.length;i++) {
        holdValues.add(A[i]);
        if(holdValues.size == X)return i;
    }

    return -1;

} 
Run Code Online (Sandbox Code Playgroud)