代码随想录算法训练营第三天 | 链表 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;
    }
}
复制代码

提交结果

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

五、总结

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



目录
相关文章
|
9月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
780 0
|
9月前
|
机器学习/深度学习 算法 机器人
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
397 8
|
9月前
|
机器学习/深度学习 算法 自动驾驶
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
459 8
|
9月前
|
数据采集 分布式计算 并行计算
mRMR算法实现特征选择-MATLAB
mRMR算法实现特征选择-MATLAB
491 2
|
10月前
|
存储 编解码 算法
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
309 6
|
10月前
|
传感器 机器学习/深度学习 编解码
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
395 3
|
10月前
|
机器学习/深度学习 传感器 算法
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
418 14
|
9月前
|
机器学习/深度学习 算法 数据可视化
基于MVO多元宇宙优化的DBSCAN聚类算法matlab仿真
本程序基于MATLAB实现MVO优化的DBSCAN聚类算法,通过多元宇宙优化自动搜索最优参数Eps与MinPts,提升聚类精度。对比传统DBSCAN,MVO-DBSCAN有效克服参数依赖问题,适应复杂数据分布,增强鲁棒性,适用于非均匀密度数据集的高效聚类分析。
|
9月前
|
开发框架 算法 .NET
基于ADMM无穷范数检测算法的MIMO通信系统信号检测MATLAB仿真,对比ML,MMSE,ZF以及LAMA
简介:本文介绍基于ADMM的MIMO信号检测算法,结合无穷范数优化与交替方向乘子法,降低计算复杂度并提升检测性能。涵盖MATLAB 2024b实现效果图、核心代码及详细注释,并对比ML、MMSE、ZF、OCD_MMSE与LAMA等算法。重点分析LAMA基于消息传递的低复杂度优势,适用于大规模MIMO系统,为通信系统检测提供理论支持与实践方案。(238字)
|
10月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
628 2