FCC中级算法题solution

2017-04-01  本文已影响25人  董懂同学

1. Sum All Numbers in a Range

function sumAll(arr) {
  var min,max; 
  if (arr[0]>arr[1]) {
    max = arr[0];
    min = arr[1];
  }else{
    max = arr[1];
    min = arr[0];
  }
  var sum = 0;
  for (var i = min; i <= max ; i++) {
    sum+=i;    
}
    return sum;
}

思路:
1.判断两个数大小,大的赋给max,小的赋给min
2.for循环,将min设为初始值,max设为循环边界值,求和
3.返回求和值

2. Diff Two Arrays

function diffArray(arr1, arr2) {
  var newArr = arr1.concat(arr2);
  newArr.sort();
  for (var i = 0; i < newArr.length; i++) {
    if (newArr[i]===newArr[i+1]) {
        delete newArr[i];
        delete newArr[i+1];
    }
  }
  return newArr.filter(Boolean);
}

思路:
1.将两个数组连接成一个数组
2.对数组元素进行排序
3.判断相邻的数是否相同,如果相同,则把这俩数全部删除
4.过滤所有真值,并将其返回。

5. Search and Replace

function myReplace(str, before, after) {
    var beforeFirstLetter = before.substr(0,1); //截取之前字符串的首位
    var newstr;
    var flag =  /[A-Z]/.test(beforeFirstLetter);
    if(!flag){
        newstr = str.replace(before,after);
        return newstr;
        
    }else{
        var afterFirstLetter = after.substr(0,1).toUpperCase();  //将替换单词首字母取出来大写
        var sliced = after.split('').slice(1).join('');  //将除过首字母之外的部分切割出来
        newafter = afterFirstLetter + sliced;  //拼接首字母大写的单词
        newstr = str.replace(before,newafter);
        return newstr;
    }   
}

思路:
1.判断要替换的单词首字母是否为大写。
2.不是的话,直接替换。
3.是大写的将需要替换的单词首字母变成大写然后替换。

21.Arguments Optional

我在这道题上卡的时间比较长,因为理解闭包花费了一些时间,看了好些博客和YouTube上的教程,自己也跟着教程敲了一些代码,理解的差不多重新回来看题,思路清晰了不少。

上一篇下一篇

猜你喜欢

热点阅读