FCC中级算法题solution

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上的教程,自己也跟着教程敲了一些代码,理解的差不多重新回来看题,思路清晰了不少。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • leetcode刷题记录本文记录一下leetcode刷题记录,记录一下自己的解法和心得。 LeetCode Two...
    EarthChen阅读 3,528评论 0 6
  • 数组在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称...
    朱森阅读 4,080评论 2 13
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,790评论 0 33
  • 人的记忆就像电脑一样,需要对信息进行输入、储存和检索,当我们能够自如的检索到储存在大脑里的信息时才算是真正意义上的...
    小疯子会好好的阅读 243评论 0 0
  • 以为你只是喉咙痛,拿点药吃很快就会好了。没想到你喉咙痛好了,又感冒咳嗽了。你就不能好好的吗?可能是这几月来都没怎么...
    户外_a931阅读 246评论 0 0