前端刷题之LintCode(领扣)上入门题解析

前端刷题之LintCode(领扣)入门题解析

首先打开领扣的官网:领扣

然后我们来看看入门的前端题都有哪些:
前端刷题之LintCode(领扣)上入门题解析_第1张图片

  • 注意:函数名称是定义好的,我们直接写处理函数就可以。

1. 题目:反转一个3位整数

前端刷题之LintCode(领扣)上入门题解析_第2张图片

  • 解析:反转一个三位的整数,第一我想到的是把它变成字符串,然后在反转字符串,最后转回数字,其中反转字符串就要先把字符串分割,在进行反转,代码如下:
/**
 * @param number: A 3-digit number.
 * @return: Reversed number.
 */
const reverseInteger = function (number) {
    return Number(String(number).split('').reverse().join(''))
}
  • 提交:提交后的结果:
    前端刷题之LintCode(领扣)上入门题解析_第3张图片

2. 题目:大小写转化

前端刷题之LintCode(领扣)上入门题解析_第4张图片

  • 解析:这里题目只需要将一个字符由小写字母转换为大写字母,而不需要相互转化,因此只需要用到JS的toUpperCase()函数即可。
/**
 * @param character: a character
 * @return: a character
 */
const lowercaseToUppercase = function (character) {
    // write your code here
    return character.toUpperCase()
}
  • 提交:提交后的结果:
    前端刷题之LintCode(领扣)上入门题解析_第5张图片

3. 题目:三数之中的最大值

前端刷题之LintCode(领扣)上入门题解析_第6张图片

  • 解析:题目中是输入三个数,取他们的最大值,这里我先计算出三个数的平均值,判断如果num1大于平均值就输出num1,如果num2大于平均值就输出num2,如果num3大于平均值就输出num3,最后还要判断如果三个数字相等,则直接输出num1/num2/num3/平均值,这里我输出的是平均值。
/**
 * @param num1: An integer
 * @param num2: An integer
 * @param num3: An integer
 * @return: an interger
 */
const maxOfThreeNumbers = function (num1, num2, num3) {
    var average = (num1+num2+num3)/3
    if(num1!=num2&&num2!=num3){
        if(num1>average){
            return num1
        }
        if(num2>average){
            return num2
        }
        if(num3>average){
            return num3
        }
    }
    if(num1==num2&&num2==num3){
        return average
    }
    
}
  • 提交:提交后的结果:
    前端刷题之LintCode(领扣)上入门题解析_第7张图片

4. 问题:斐波纳契数列

前端刷题之LintCode(领扣)上入门题解析_第8张图片

  • 解析:如题目所说,所谓的斐波纳契数列是指:前2个数是 0 和 1 ;第 i 个数是第 i-1 个数和第i-2 个数的和。题目要求输入一个数字,就得到该数字对应位数的斐波那契额数列的值,我们看到题目给出的斐波那契数列是以0,1开头的,后面每一项都是前两项的和,因此当n=1是,返回0,当n=2时,返回1,当输入的n>=3时,返回前两项的和,最开始我直接返回两数的和,但是提交运行显示超时,于是优化了写法,此处用到ES6剩余参数和默认值写法,第二次提交就成功了。
/**
 * @param n: an integer
 * @return: an ineger f(n)
 */
const fibonacci = function (n) {
    if(n===1){return 0}
    if(n===2){return 1}
    return fibonacci(n-1)+fibonacci(n-2)
}
  • 第一次提交:提交后的结果:
    前端刷题之LintCode(领扣)上入门题解析_第9张图片
/**
 * @param n: an integer
 * @return: an ineger f(n)
 */
const fibonacci = function (n ,ac1=0,ac2=1) {
   function fib(n, v1=0, v2=1) {
        if (n == 1)
            return v1;
        if (n == 2)
            return v2;
        else
            return fib(n - 1, v2, v1 + v2)
    }
    return fib(n)
}
  • 第二次提交:提交后的结果:
    前端刷题之LintCode(领扣)上入门题解析_第10张图片

5. 题目:整数排序

前端刷题之LintCode(领扣)上入门题解析_第11张图片

  • 解析:数组排序算是一个老问题了,网上也有含多种方法,最开始我直接调用sort()函数,但是返回值出现了问题,我们看到sort()只会判断首位数字的大小,进行排序,而不会比较数字真实的大小,因此我们在sort()函数之前,先进行数字大小比较,在进行排序即可。
/**
 * @param A: an integer array
 * @return: 
 */
const sortIntegers = function (A) {
    return A.sort()
}
  • 第一次提交:提交后的结果:
    前端刷题之LintCode(领扣)上入门题解析_第12张图片
/**
 * @param A: an integer array
 * @return: 
 */
const sortIntegers = function (A) {
    var compare = function (x, y) {//比较函数
    if (x < y) {
        return -1;
        } else if (x > y) {
            return 1;
        } else {
            return 0;
        }
    }
     return A.sort( compare )
}
  • 第二次提交:提交后的结果:
    前端刷题之LintCode(领扣)上入门题解析_第13张图片

6. 题目:交换数组两个元素

前端刷题之LintCode(领扣)上入门题解析_第14张图片

  • 解析:这是一个经典的数据交换思想,a=b; b=c; c=a; 这是学习任何一门编程语言的一个入门级别的重要思想,通过定义一个c中间量,进行数据的交换。
/**
 * @param A: An integer array
 * @param index1: the first index
 * @param index2: the second index
 * @return: 
 */
const swapIntegers = function (A, index1, index2) {
    // write your code here
    var index0 = A[index1] 
    A[index1] = A[index2]
    A[index2] = index0
}
  • 提交:提交后的结果:
    前端刷题之LintCode(领扣)上入门题解析_第15张图片

你可能感兴趣的:(前端刷题之LintCode(领扣)上入门题解析)