代码随想录算法训练营第三天 | 链表 206. 反转链表 707. 设计链表 203. 移除链表元素

简介: 代码随想录算法训练营第三天 | 链表 206. 反转链表 707. 设计链表 203. 移除链表元素

一、前言

今天是代码训练营第三天,链表相关,LeetCode题分别是  206. 反转链表 707. 设计链表 203. 移除链表元素

二、 206. 反转链表

题目描述

网络异常,图片无法展示
|

网络异常,图片无法展示
|

思路分析

这个比较简单, 搞个新链表,一个中间节点然后来回切换就可以了

代码展示

class Solution {
    public ListNode reverseList(ListNode head) {
        ListNode result = null;
        ListNode cur = head;
        ListNode temp = null;
        while(cur != null){
            temp = cur.next;
            cur.next = result;
            result = cur;
            cur = temp;
        }
        return  result;
    }
}
复制代码

提交结果

网络异常,图片无法展示
|

三、 707. 设计链表

题目描述

网络异常,图片无法展示
|

思路分析

在这道题上面卡了很久,之前刷的时候落下了这道题,只有一点思路做起来就很难

其中添加首尾节点的方法都可以使用指定下标添加方法复用来做

主要需要注意的就是理解每个方法的作用,同时计算好边界

代码展示

public class MyLinkedList {
    int size;
    ListNode node;
    public MyLinkedList() {
        size = 0;
        node = new ListNode(0);
    }
    public int get(int index) {
        if (index < 0 || index >= size){
            return -1;
        }
        ListNode root = node;
        for (int i = 0; i <= index; i++) {
            root = root.next;
        }
        return root.val;
    }
    public void addAtHead(int val) {
        addAtIndex(0, val);
    }
    public void addAtTail(int val) {
        addAtIndex(size, val);
    }
    public void addAtIndex(int index, int val) {
        if (index > size){
            return;
        }
        if (index < 0){
            index = 0;
        }
        ListNode temp = node;
        for (int i = 0; i < index; i++) {
            temp = temp.next;
        }
        ListNode root = new ListNode(val);
        root.next = temp.next;
        temp.next = root;
        size++;
    }
    public void deleteAtIndex(int index) {
        if (index < 0 || index >= size){
            return;
        }
        size--;
        if(index == 0){
            node = node.next;
            return;
        }
        ListNode temp = node;
        for (int i = 0; i < index; i++) {
            temp = temp.next;
        }
        temp.next = temp.next.next;
    }
    @Override
    public String toString() {
        return "MyLinkedList{" +
                "size=" + size +
                ", node=" + node +
                '}';
    }
}
复制代码

提交结果

网络异常,图片无法展示
|

四、 203. 移除链表元素

题目描述

网络异常,图片无法展示
|

思路分析

也是使用中间节点来做的

代码展示

class Solution {
    public ListNode removeElements(ListNode head, int val) {
        if (head == null){
            return null;
        }
        ListNode temp = new ListNode(-1, head);
        ListNode pre = temp;
        ListNode cur = head;
        while(cur != null){
            if (cur.val == val){
                pre.next = cur.next;
            }else{
                pre = cur;
            }
            cur = cur.next;
        }
        return temp.next;
    }
}
复制代码

提交结果

网络异常,图片无法展示
|

五、总结

今天有点累,思路分析都有点简略,有代码看起来比较难的可以去看代码随想录的网站或者直接评论留言,每天摸鱼的我肯定可以非常及时的回复



目录
相关文章
|
22天前
|
存储 算法 程序员
C 语言递归算法:以简洁代码驾驭复杂逻辑
C语言递归算法简介:通过简洁的代码实现复杂的逻辑处理,递归函数自我调用解决分层问题,高效而优雅。适用于树形结构遍历、数学计算等领域。
|
23天前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
54 1
|
1月前
|
存储 缓存 算法
通过优化算法和代码结构来提升易语言程序的执行效率
通过优化算法和代码结构来提升易语言程序的执行效率
|
1月前
|
算法
分享一些提高二叉树遍历算法效率的代码示例
这只是简单的示例代码,实际应用中可能还需要根据具体需求进行更多的优化和处理。你可以根据自己的需求对代码进行修改和扩展。
|
1月前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
7月前
【移除链表元素】LeetCode第203题讲解
【移除链表元素】LeetCode第203题讲解
|
6月前
|
存储 SQL 算法
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
|
6月前
|
存储 SQL 算法
LeetCode 题目 86:分隔链表
LeetCode 题目 86:分隔链表
|
6月前
|
存储 算法 Java
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
65 2
|
7月前
<数据结构>五道LeetCode链表题分析.环形链表,反转链表,合并链表,找中间节点.
<数据结构>五道LeetCode链表题分析.环形链表,反转链表,合并链表,找中间节点
62 1