代码随想录day3

山东大学机器学习(实验一内容)——线性回归 1. 描述 第一个练习将为你提供线性回归练习。这些练习已经用Matlab进行了广泛的测试,但它们也应该在Octave中工作,它被称为“免费版的Matlab”。如果你使用的是Octave,那就是 一定要安装Image包(可在Windows中作为选项使用)安装程序,可从Octave-Forge获得Linux。 2.线性回归 回想一下,线性回归模型是 hθ(x)=θTx=∑j=0nθjxj h_{\th... 阅读详情

day3

移除链表元素

题意:删除链表中等于给定值 val 的所有节点。

示例 1:

输入:head = [1,2,6,3,4,5,6], val = 6 输出:[1,2,3,4,5]

思路

两种考虑方式:
1、无虚拟头结点
2、有虚拟头结点

在这两种方式中,对链表节点的删除操作,不太一样

本文实现第二种方式

class Solution {
    public ListNode removeElements(ListNode head, int val) {
        ListNode dummy = new ListNode(-1);
        dummy.next = head;
        ListNode pre = dummy;
        while(head != null){
            // ListNode tmp = cur.next;
            if(head.val == val){
                pre.next = head.next;
                // head = pre.next;
            }else{
                // cur = cur.next;
                pre = head;
                
            }
            head = head.next;
        }
        return dummy.next;
    }
}

设计链表

你可以选择使用单链表或者双链表,设计并实现自己的链表。

单链表中的节点应该具备两个属性:val 和 next 。val 是当前节点的值,next 是指向下一个节点的指针/引用。

如果是双向链表,则还需要属性 prev 以指示链表中的上一个节点。假设链表中的所有节点下标从 0 开始。

实现 MyLinkedList 类:

  1. MyLinkedList() 初始化 MyLinkedList 对象。 int get(int index) 获取链表中下标为index的节点的值。如果下标无效,则返回 -1 。
  2. void addAtHead(int val) 将一个值为 val 的节点插入到链表中第一个元素之前。在插入完成后,新节点会成为链表的第一个节点。
  3. void addAtTail(int val)将一个值为 val 的节点追加到链表中作为链表的最后一个元素。
  4. void addAtIndex(int index, int val) 将一个值为 val 的节点插入到链表中下标为 index 的节点之前。如果 index等于链表的长度,那么该节点会被追加到链表的末尾。如果 index 比长度更大,该节点将 不会插入 到链表中。
  5. void deleteAtIndex(int index) 如果下标有效,则删除链表中下标为 index 的节点。

思路

模拟实际链表的思路进行操作
分为5步

获取链表第index个节点的数值
在链表的最前面插入一个节点
在链表的最后面插入一个节点
在链表第index个节点前面插入一个节点
删除链表的第index个节点
class MyLinkedList {
    int size;
    ListNode head;
    // ListNode tail;

    public MyLinkedList() {
        this.size = 0;
        head = new ListNode(0);
        
    }
    
    public int get(int index) {
        if(index >= size || index < 0){
            return -1;
        }
        ListNode cur = head;
        for(int i = 0;i <= index;i++){
            cur = cur.next;
        }
        return cur.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;
        size++;


        ListNode cur = head;
        for(int i = 0;i < index;i++){
            cur = cur.next;
        }
        // ListNode tmp = cur.next;
        ListNode mid = new ListNode(val,cur.next);
        cur.next = mid;
        
        
            
    }
    
    public void deleteAtIndex(int index) {
        if(index >= size || index < 0)
            return;
        size--;
        if(index == 0){
            head = head.next;
            return;
        }

        ListNode cur = head;
        for(int i = 0;i < index;i++){
            cur = cur.next;
        }
        // ListNode tmp = cur.next;
        cur.next = cur.next.next;
        
    }
    class ListNode{
        int val;
        ListNode next;
        ListNode(int val){
            this.val = val;
        }
        ListNode(int val, ListNode next){
            this.val = val;
            this.next = next;
        }

    }
}

反转链表

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
在这里插入图片描述

输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]

思路:

牢记两种反转链表的方式:
第一种:两两反转
在这里插入图片描述

        ListNode pre = null;
        ListNode cur = head;
        while(cur != null){
            ListNode tmp = cur.next;
            cur.next = pre;
            pre = cur;
            cur = tmp;
        }
        return pre;

第二种:内部反转
在这里插入图片描述

        ListNode pre = head;
        ListNode cur = head;
        while(pre.next != null){
            ListNode tmp = pre.next.next;
            pre.next.next = cur;
            cur = pre.next;
            pre.next = tmp;
            // pre = tmp;
        }
        return cur;
【机器学习系列】一文搞懂 零知识机器学习(zkML) 位串行乘法器:实现了Booth编码优化,将乘法分解为移位-加法序列,减少部分积数量50%:模拟脉动阵列的2D网格计算,支持分块(tiling)策略优化内存层次卷积映射:提供直接卷积(行缓冲+滑动窗口)和im2col+GEMM两种硬件映射策略。 阅读详情

相关推荐

LTspice introduction - 2 LTspice的界面

LTspice的界面主要有两个:Schematic Capture和Waveform Viewer Schematic Capture 它主要是用来画电路图的,画完电路图之后,添加一些dot 命令同时选择一些仿真的参数,点击执行(Run)Waveform Viewer 如果你的仿真不是op point的话,一个都会打开它,在它里面你可以画图相应的图形。 有两种方式可以在Viewer

贾亮的专栏 3221

代码随想录Day3

题意:删除链表中等于给定值 val 的所有节点。示例 1: 输入:head = [1,2,6,3,4,5,6], val = 6 输出:[1,2,3,4,5]示例 2: 输入:head = [], val = 1 输出:[]示例 3: 输入:head = [7,7,7,7], val = 7 输出:[]刚开始看这道题目的时候还是有些轻敌了,虽然并不难,但是还是有几个小细节需要注意。

HNTZB的博客 930

Linux -- 图形界面配置Samba;system-config-samba工具

图形界面配置Samba6.6.1 system-config-sambasystem-config-samba是Red Hat公司专门为Samba服务器管理编写的图形界面的管理工具,通过system-config-samba几乎可以完成对Samba服务器的所有配置,所以在只希望通过Samba服务器实现一些简单的资源共享时,system-config-samba是一个不错的选...

weixin_33695450的博客 2200

代码随想录刷题Day3

的速度在排查范围内找到和target有关的信息,比如是否存在,或者插入target的位置,或者是x的平方根应该取多少,或者是第k大的数(这个应该和快速排序有关了),总之是提速的一个好方法,只是前提要求比较高,得是有序的,以及在实现过程中,越复杂的问题,需要考虑的细节也会增多。做新类型的题目了,关于数组中元素的移除问题,这是简单题,要求原地移除数组中值为val的值,根据数组的连续存放的特性,删除后的元素还是得紧密地挨在一起,暴力解法是删除一个元素,就把后面的元素全都往前挪,这样下来时间复杂度应该是。

qq_57141819的博客 453

Vivado图形化界面烧写MCS文件到SPI FLASH全流程(附常见报错解决方案)

本文详细介绍了使用Vivado图形化界面将MCS文件烧录至SPI FLASH的完整操作流程。内容涵盖从环境准备、MCS文件生成到硬件连接与烧写的每一步,并针对SPI总线宽度报错、FLASH型号识别失败等常见问题提供了深度解决方案,帮助用户高效完成FPGA配置,摆脱对TCL命令行的依赖。

s8t9u0v1w的博客 536

Vscode+ROS/ROS2 开发调试基于ROS/ROS2应用环境配置

在ROS操作系统开发应用程序时,我们常常需要调试代码,验证程序的正确性。但是在用rosrun或者roslaunch启动节点后,若程序运行过程中发生错误而导致发生出错停止工作,这时候终端并不会输出具体的信息指出在何处发生了错误,具体错误的原因又是什么。往往仅仅是core dump 或者segmentation fault 等等一类的模糊提示。

Chasinglight的博客 5800

Day 3 代码随想录 刷题记录

今日共刷两题,用时2h55mins。链表相关的用法还不是很清晰,可以再学习一下~

windyyyyyyyyyyy的博客 1061

MacOS多次踩坑后成功安装Homebrew

来一次性成功安装Homebrew吧 官网提供的安装脚本无法成功安装Homebrew,原因大家都懂的,故采用脚本安装的方式。 下载homebrew的安装脚本brew_install 在Download路径下执行如下脚本 curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install >> brew_install 修改brew_install脚本 修改brew_install脚本。如果你的脚本打开之后是如下

weixin_41847116的博客 1983

代码随想录算法训练营Day3

*力扣203.移除链表元素、707.设计链表、206.反转链表。

lololo的博客 955

jmeter小白下载安装步骤

本文仅仅简单介绍了jmeter工具的下载安装,以及基础的操作步骤。

昔年@曦的博客 3494

【报错】sqli-labs靶场搭建出现“Unable to connect to the database: security”

搭建sqli-labs靶场时,“Unable to connect to the database: security”报错解决

九芒星的博客 2991

代码随想录60期day 3

【代码】代码随想录60期day 3。

qq_19555169的博客 247

2025电赛嵌入式:K210教程-如何刷固件 如何烧录代码 全网唯一

本文介绍了K210开发板的固件刷写和开发环境搭建方法。主要内容包括:1)从Sipeed官网下载合适的MaixPy固件,根据需求选择完整版或精简版;2)使用k-flash等工具烧录固件,注意区分亚博和Sipeed开发板的固件版本;3)介绍了擦除闪存的两种模式(部分擦除和完全擦除)及其应用场景;4)搭建CanMV开发环境,通过MaixPy IDE连接开发板并进行程序调试。文章还提供了常见问题的解决方法,如串口驱动安装、固件兼容性检查等,为K210开发提供了完整的入门指南。

FJN110的博客 547

代码随想录训练Day3[链表]

好吧,好久没写了,好多东西都忘记了,想用之前的解法,怎么都没想起来,直接看答案了。注意curr ,pre 作为指针直接等于节点 还有递归的解法。有好多边界调节没处理到位,调试了好久。加入虚拟头节点后可以统一删除操作。,请你删除链表中所有满足。给你一个链表的头节点。

2302_77073920的博客 275

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

LeetCode代码随想录跟刷Day3

在编写该代码时犯了一个小错误,在addAtIndex(int index, int val)函数中一开始没有把size++放在if语句内,导致size加了两次。其二是在审题的时候没看清楚,在前面在后面加搞混了。经过调试测试可以通过,第一次编程有一个错误导致了两个地方的报错,在最后面一段,指针不应该在每次判断时就往后移一位,导致了while语句中也报错。很经典的算法题,设置一个虚拟的nullptr,断开指向下一个的指针,重新指向前一个元素,借助一个虚拟的nullptr完成反转。

gmail_82410的博客 348

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

代码随想录第五十八期day3

题目解析:就是在链表里面找到目标值删掉,然后返回新链表即可,但是在处理时发现可能的方法有很多,就像上面给的事例一样,这时为了统一成一样的操作,我们可以虚拟出一个头节点,然后从虚拟头节点后面去操作,就能省略有删除头节点,而导致头节点一直在变,使得不好找头节点的问题。题目描述:给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点。题目:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

qq_64919637的博客 834

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

代码随想录day3链表1

1.new是一个关键字,用于开辟空间,开辟的空间在堆上,而一般声明的变量存放在栈上;2.new得到的是一段空间的首地址。所以一般需要用指针来存放这段地址3.开辟的内存空间需要记得delete掉,否则会造成内存泄漏!delete p的时候:首先调用这个对象的析构函数,然后释放这个对象的空间。

皮蛋瘦肉粥的博客 297

力扣 206 代码随想录Day3 第三题

【代码】力扣 206 代码随想录Day3 第三题。

2301_80653171的博客 243

猛攻代码随想录day3|26届暑期实习

周末两天补了补项目,玩了玩,没做题呜呜呜。

weixin_52878972的博客 757

力扣 203 代码随想录Day3 第一题

【代码】力扣 203 代码随想录Day3 第一题。

2301_80653171的博客 201

代码随想录算法训练营day3(链表)

【代码】代码随想录算法训练营day3(链表)

huaz_md的博客 347

代码随想录算法-day3

题有点多啊~~还是得“今日事,今日毕”!

qq_46147058的博客 969

代码随想录算法【Day3】

头结点的删除和其他节点的删除不一样:删除其他节点,都需要更新其前一个节点的指针,删除头结点,只用把head指针指向下一个节点。LinkedNode(int val):val(val), next(nullptr){}//nullptr是C++中的关键字,表示空指针。//把index小于0的情况也看作头插法。//记得回收空间,第一次写忘掉了。//获取第index个节点的值,无效则返回-1,节点从0开始。//初始化MyLinkedList对象。的位置之前,原链表的第 1 个节点是。//定义链表节点结构体。

qq_59414507的博客 1048

代码随想录-算法训练营day49(动态规划11:买卖股票的最佳时机3,买卖股票的最佳时机4)

动态规划11:买卖股票

weixin_61931006的博客 1161

代码随想录算法训练营Day3 | Leetcode 203移除链表元素、707设计链表、206反转链表

void addAtIndex(int index, int val) 将一个值为 val 的节点插入到链表中下标为 index 的节点之前。在插入完成后,新节点会成为链表的第一个节点。给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回。int get(int index) 获取链表中下标为 index 的节点的值。void addAtTail(int val) 将一个值为 val 的节点追加到链表中作为链表的最后一个元素。

叽里呱啦大王的博客 845
上一篇: 代码随想录day2
下一篇: 代码随想录day4 -链表
Strongwind_
博客等级 码龄7年 139粉丝 22原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值