牛客网刷题打卡2021.3.4

今日份刷题九道

在这里插入图片描述
FED3:
题目描述
查找两个节点的最近的一个共同父节点,可以包括节点自身

我的代码:

function commonParentNode(oNode1, oNode2) {
    if(oNode1.parentNode==oNode2.parentNode){
        return oNode1.parentNode
    }
}

题解:(大神答案)

function commonParentNode(oNode1, oNode2) {
    if(oNode1.contains(oNode2)){
        return oNode1;
    }else{
        return commonParentNode(oNode1.parentNode,oNode2);
    }
} 

思路: 判断oNode1中是否包含oNode2?如果包含则共同父节点为oNode1;如果不包含,则自调用,判断oNode1的父节点中是否包含oNode2?以此类推。

难点: 验证一个节点是否包含另一个节点就可以,不必验证两次,如果是被包含的关系,往上爬的时候会遇到另一个节点的。

FED6:
题目描述
用 JavaScript 实现斐波那契数列函数,返回第n个斐波那契数。 f(1) = 1, f(2) = 1 等

我的代码:

function fibonacci(n) {
    if(n==2||n==1){
        return 1
    }
    else{
        return fibonacci(n-1)+fibonacci(n-2);
    }
}

题解:(大神答案)

function fibonacci(n) {
        //一、递归解法
        return n<=2?1:fibonacci(n-1)+fibonacci(n-2);
        
        //二、循环解法
        var num1=1;
        var num2=1;
        for(var i=2;i<n;i++){
                num2+=num1;
                num1=num2-num1;
        }
        return num2;
}

难点: 循环体内的计算过程详解:
第一句:将num2的旧值,加上num1,得到num2的新值
第二句:用num2的新值,减去num1,得到num1的新值
当前循环结束,num1和num2的值都获得了更新

FED7:
题目描述
题目描述
按所给的时间格式输出指定的时间
格式说明
对于 2014.09.05 13:14:20
yyyy: 年份,2014
yy: 年份,14
MM: 月份,补满两位,09
M: 月份, 9
dd: 日期,补满两位,05
d: 日期, 5
HH: 24制小时,补满两位,13
H: 24制小时,13
hh: 12制小时,补满两位,01
h: 12制小时,1
mm: 分钟,补满两位,14
m: 分钟,14
ss: 秒,补满两位,20
s: 秒,20
w: 星期,为 [‘日’, ‘一’, ‘二’, ‘三’, ‘四’, ‘五’, ‘六’] 中的某一个

function formatDate(t,str){
    var time={
            'yyyy':t.getFullYear(),
            'yy':t.getFullYear()%100,
            'MM':add0(t.getMonth()+1),
            'M':t.getMonth()+1,
            'dd':add0(t.getDate()),
            'd':t.getDate(),
            'HH':add0(t.getHours()),
            'H':t.getHours(),
            'hh':add0(t.getHours()%12),
            'h':t.getHours()%12,
            'mm':add0(t.getMinutes()),
            'm':t.getMinutes(),
            'ss':add0(t.getSeconds()),
            's':t.getSeconds(),
            'w':function(){
                var day=["日","一","二","三","四","五","六"];
                return day[t.getDay()]
            }
    }
    for(var i in time){
        str=str.replace(i,time[i]);
    }
    function add0(tt){
        if(tt<10){
            return 0+''+tt
        }
        else{
            return tt
        }
    }
    return str
}

FED8:
题目描述
如果第二个参数 bUnicode255For1 === true,则所有字符长度为 1
否则如果字符 Unicode 编码 > 255 则长度为 2

function strLength(s, bUnicode255For1) {
    var length=s.length;
    if(!bUnicode255For1){
        for(var i in s){
            if(s.charCodeAt(i)>255){
                length++
            }
        }
    }
    return length;
}

难点: charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。
字符串中第一个字符的位置为 0, 第二个字符位置为 1,以此类推。
语法:string.charCodeAt(index)

FED13:加粗文字
这道题没什么好说的,使用strong标签就可以了

FED14:段落标识
这道题使用p标签就可以了

FED15:设置文字颜色
使用style将文字变色就可以了

FED16:
题目描述
找出元素 item 在给定数组 arr 中的位置

function indexOf(arr, item) {
    return arr.indexOf(item)
}

FED17:
题目描述
计算给定数组 arr 中所有元素的总和

function sum(arr) {
    var sum=0
    for(var i=0;i<arr.length;i++){
        sum+=arr[i]
    }
    return sum
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值