继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【学习打卡】第5天 数据结构之“链表”

风吹尘
关注TA
已关注
手记 61
粉丝 9
获赞 1

课程名称:JavaScript版数据结构与算法
课程章节:第5章 数据结构之“链表”
主讲老师:lewis

课程内容:

今天学习的内容包括:
5-4 LeetCode:2. 两数相加——通过链表计算两数相加。
5-5 LeetCode:83. 删除排序链表中的重复元素——因为是排序链表,通过while循环判断p跟p.next是否相等,进行赋值即可。
5-6 LeetCode:141. 环形链表——设置两个指针一快一慢,看指针是否碰面。

课程收获:

两数相加

1、定义l3赋值给p3
2、进行while处理
3、抛出l3

/**
 * @param {ListNode} l1
 * @param {ListNode} l2
 * @return {ListNode}
 */
var addTwoNumbers = function(l1, l2) {
    const l3 = new ListNode(0)
    let p1 = l1
    let p2 = l2
    let p3 = l3
    let carry = 0
    while (p1 || p2){
        const v1 = p1 ? p1.val : 0
        const v2 = p2 ? p2.val : 0
        const val = v1 + v2 + carry
        carry = Math.floor(val / 10)
        p3.next = new ListNode(val % 10)
        if(p1) p1 = p1.next
        if(p2) p2 = p2.next
        p3 = p3.next
    }
    if(carry){
        p3.next = new ListNode(carry)
    }
    return l3.next
};

删除排序链表中的重复元素

1、因为是排序链表,通过while循环判断p跟p.next是否相等
2、对p.next = p.next.next p = p.next赋值即可

/**
 * @param {ListNode} head
 * @return {ListNode}
 */
var deleteDuplicates = function(head) {
    let p = head
    while(p && p.next){
        if(p.val === p.next.val){
            p.next = p.next.next
        }else{
             p = p.next
        }
       
    }
    return head
};

环形链表

1、设置一快一慢两个指针
2、对指针进行循环,看两个指针是否再次遇到

/**
 * @param {ListNode} head
 * @return {boolean}
 */
var hasCycle = function(head) {
    let p1 = head
    let p2 = head
    while(p1 && p2 && p2.next){
        p1 = p1.next
        p2 = p2.next.next
        if(p1 === p2){
            return true
        }
    }
    return false
};

针对最近的学习,刚开始时感觉很容易,慢慢的感觉有点吃力了,还是先跟着老师的节奏接着学习,看看能不能慢慢的理解,对自己说一句,加油😀~

坚持打卡,坚持学习!明天见💪~

http://img.mukewang.com/62f119c00001d09819200892.jpg

http://img4.mukewang.com/62f126d2000126f219200892.jpg

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP