代码随想录算法训练营第四天 |24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题 02.07. 链表相交 142.环形链表I

代码随想录算法训练营第4天| 24.两两交换链表中的节点 | 19 删除链表的倒数第N个节点 | 面试题02.07.链表相交 | 142.环形链表 1.我们可以利用快慢指针法,通过fast和slow ,fast一次走两步,slow一次走一步,如果两者在途中相遇,说明有环。此时在头节点定义一个节点tmp1 ,相遇节点处定义一个节点tmp2,两者同时走,相遇的地方即为环形入口。假设一圈就相遇,即n = 1, 带入后 x = z,即快慢指针相遇的地方就是环形入口,fast走过的路程:x+n (y+z) -----fast在环内走了n圈。3.fast和slow同时移动,直到fast为空,删除对应的slow节点。我们要求的是头到环形节点的距离:即x。 阅读详情


前言

24. 两两交换链表中的节点

题目链接
讲解链接
在这里插入图片描述
面试中常常用来考基本功

思路

奇数节点最后一个不交换,偶数节点两两交换正好
交换相邻两个元素了,此时一定要画图,不画图,操作多个指针很容易乱,而且要操作的先后顺序;
在这里插入图片描述
老师的思路需要两个tmp变量

注意点

  1. 注意交换顺序
  2. ✨注意终止条件:next和next.next不为空【需要记住的】;这一句判断就可以包括奇数和偶数的情况

注意 while语句判别条件的两个位置不能交换,否则self.next.next会有可能是空的

  1. 注意curr一定要指向要交换的节点的前一个节点
  2. 注意curr每次往后移动两位
"""
carl 的代码,挺简单的,一目了然
"""
class Solution:
    def swapPairs(self, head: ListNode) -> ListNode:
        dummy_head = ListNode(next=head)
        current = dummy_head
        
        # 必须有cur的下一个和下下个才能交换,否则说明已经交换结束了
        while current.next and current.next.next:
            temp = current.next # 防止节点修改
            temp1 = current.next.next.next
            
            current.next = current.next.next
            current.next.next = temp
            temp.next = temp1
            current = current.next.next
        return dummy_head.next

我自己的方法

在这里插入图片描述
图是用这个画的

按照这个顺序写的,也可以,只需要使用一个中间变量就行
😶我犯的错误

  1. 忘了处理完之后移动curr到next.next的位置
  2. return的应该是虚拟头节点的下一个
class Solution(object):
    def swapPairs(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        self.dammy_Node = ListNode(0,head)
        curr = self.dammy_Node
        while curr.next!=None and curr.next.next!=None:
            #注意:1两个条件不能交换顺序,必须先判断curr.next是否为空;2. 如果curr.next为空就是偶数个的情况,如果curr.next.next为空就是奇数个情况,同样也不处理
            tmp = curr.next.next.next
            curr.next.next.next = curr.next
            curr.next = curr.next.next
            curr.next.next.next = tmp
            curr = curr.next.next #记得更新到下下个节点的位置
        return self.dammy_Node.next #指向虚拟节点的下一个

19.删除链表的倒数第N个节点

题目链接
讲解链接
在这里插入图片描述

思路:快慢指针

这题的思想依旧十分巧妙
使用快慢指针的方法;还是需要使用虚拟头节点的方法
✨重难点:如何一次遍历就可以找到倒数第n个节点呢?让快指针比慢指针先走n个节点,然后快、慢指针同时前进,当快指针指向None的时候,慢指针指向倒数第n个节点
注意细节:由前面的经验可以知道,指针应该要指向被操作节点的同一个,也就是慢指针应该指向倒数第n个节点的前一个指针;
解决思路一:老师版本,让fast比slow的提前走n+1个,当fast指向null的时候,slow指向前一个
解决思路二:我自己想的,fast比slow提前走n个,当fast的next指向空的时候,slow指向前一个

class Solution:
    def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
        # 创建一个虚拟节点,并将其下一个指针设置为链表的头部
        dummy_head = ListNode(0, head)
        
        # 创建两个指针,慢指针和快指针,并将它们初始化为虚拟节点
        slow = fast = dummy_head
        
        # 快指针比慢指针快 n+1 步
        for i in range(n+1):
            fast = fast.next
        
        # 移动两个指针,直到快速指针到达链表的末尾
        while fast:
            slow = slow.next
            fast = fast.next
        
        # 通过更新第 (n-1) 个节点的 next 指针删除第 n 个节点
        slow.next = slow.next.next
        
        return dummy_head.next

我的思路的代码,非常简单

"""
我的思路的代码,非常简单
"""
class Solution(object):
    def removeNthFromEnd(self, head, n):
        """
        :type head: ListNode
        :type n: int
        :rtype: ListNode
        """
        self.dammy_head = ListNode(0,head)
        fast,slow = self.dammy_head,self.dammy_head
        #让fast先走n个
        while n:
            fast = fast.next
            n -= 1
        #fast&slow同时走
        while fast.next!=None:
            fast = fast.next
            slow = slow.next
        # 删除节点操作
        slow.next = slow.next.next
        return self.dammy_head.next

面试题 02.07. 链表相交

题目链接
讲解链接
在这里插入图片描述

思路

这个题目拿到手还是一点思路都没有

解法:我们求出两个链表的长度,并求出两个链表长度的差值,然后让curA移动到,和curB 末尾对齐的位置,如在这里插入图片描述
此时我们就可以比较curA和curB是否相同,如果不相同,同时向后移动curA和curB,如果遇到curA == curB,则找到交点。否则为空

时间复杂度:O(n + m)
空间复杂度:O(1)

下面是老师写的版本:
可以学习的地方在于

  1. 将curB设置为最长链表的头
  2. 后面同时前进的时候遍历while的条件语句为curA不为none,然后while里面判断是否为同一个节点,比我的代码简洁
class Solution:
    def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode:
        lenA, lenB = 0, 0
        cur = headA
        while cur:         # 求链表A的长度
            cur = cur.next 
            lenA += 1
        cur = headB 
        while cur:         # 求链表B的长度
            cur = cur.next 
            lenB += 1
        curA, curB = headA, headB
        if lenA > lenB:     # 让curB为最长链表的头,lenB为其长度
            curA, curB = curB, curA
            lenA, lenB = lenB, lenA 
        for _ in range(lenB - lenA):  # 让curA和curB在同一起点上(末尾位置对齐)
            curB = curB.next 
        while curA:         #  遍历curA 和 curB,遇到相同则直接返回
            if curA == curB:
                return curA
            else:
                curA = curA.next 
                curB = curB.next
        return None 

下面是自己写的python版本,知道思路之后就很简单,没什么要注意的

class Solution(object):
    def getIntersectionNode(self, headA, headB):
        """
        :type head1, head1: ListNode
        :rtype: ListNode
        """
        #calculate length of A and B
        count_A, count_B = 0,0
        curr = headA
        pointa,pointb = headA,headB
        while curr!=None:
            count_A += 1
            curr = curr.next

        curr = headB
        while curr!=None:
            count_B += 1
            curr = curr.next
        print("a size is"+str(count_A)+"b size is "+str(count_B))
        if count_A > count_B:
            gap = count_A - count_B
            #移动curr的指针到和B起始的位置
            while gap:
                pointa = pointa.next
                gap -= 1

        else:
            gap = count_B - count_A
            while gap:
                pointb = pointb.next
                gap -= 1

        while pointa !=pointb and pointa !=None and pointb !=None:
            pointa = pointa.next
            pointb = pointb.next
        # print("pointa val is "+str(pointa.val))
        if pointa == pointb:
            return pointa
        else:
            return None

142.环形链表II


题目链接

讲解链接
在这里插入图片描述

思路

这道题目需要数据推导,很不容易
首先使用快慢指针,快指针跑两个格子,慢指针跑一个,如果慢指针和快指针能相遇,那就是有环的,否则没有。
接着推导公式:确认有环之后找到环的入口:x==z【重要结论】
在这里插入图片描述
在这里插入图片描述
这个公式说明什么呢?
在这里插入图片描述
在这里插入图片描述

  • 补充问题:为什么慢指针一定会在第一圈被快指针追上:fast是走两步,slow是走一步,其实相对于slow来说,fast是一个节点一个节点的靠近slow的,所以fast一定可以和slow重合。下面这个图将转的圈圈展开,可以看到slow在里面转一圈的时候,fast一定给是可以追上去的
    在这里插入图片描述
class Solution(object):
    def detectCycle(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        #首先寻找是否有环
        fast,slow = head,head
        while fast != None and fast.next:
            fast = fast.next.next
            slow = slow.next
            if fast == slow:#说明有环,index1和index2开始找入口
                index1 = head
                index2 = slow
                while index1 != index2:
                    index1 = index1.next
                    index2 = index2.next
                return index1
        return None
多无人车协同探索开源包部署教程及常见报错解决方式 本博客将介绍项目的基本概念、部署步骤以及常见问题的解决方案。该项目利用 RRT(Rapidly-exploring Random Tree)算法,通过多机器人协作进行高效的环境探索,适用于自动化与自主导航任务。项目简介:介绍该项目的核心算法、特点及应用场景,展示如何通过多个机器人共同工作来提升探索效率。部署教程:详细讲解如何在 ROS Noetic 环境中部署该项目,安装依赖、创建工作空间、克隆代码并编译项目。项目运行:包括单机器人与多机器人自主探索的示例,帮助读者快速理解和实践项目。 阅读详情

相关推荐

PVE启动卡在loading initial ramdisk

pve显卡直通导致的异常解决

学而时习之 6687

代码随想录算法训练营第四天 | 24. 两两交换链表中的节点、 19. 删除链表的倒数第 N 个结点 、面试题 02.07. 链表相交、142. 环形链表 I

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

weixin_45461296的博客 452

极验第四代滑块验证码破解(三):滑块轨迹构造

极验第四代滑块验证码破解(三):滑块轨迹构造声明 声明 原创文章,请勿转载! 本文内容仅限于安全研究,不公开具体源码。维护网络安全,人人有责。 本文关联文章超链接:

帯泪的鱼的博客 8624

代码随想录算法训练营第四天 | 24. 两两交换链表中的节点 ,19.删除链表的倒数第N个节点 ,面试题 02.07. 链表相交 , 142.环形链表II

力扣算法

LXY999222的博客 2293

从SFF-8087到SFF-8643:详解服务器硬盘背板连接线缆的演变与实战接线

本文深度解析了服务器硬盘背板连接技术从SFF-8087到SFF-8643的演进历程,重点介绍了SAS、SATA和U.2接口的技术特点与实战接线方案。通过对比不同连接器标准的物理特性和电气规范,提供了混合环境下的线缆选择策略和常见故障排查指南,帮助IT专业人员优化存储系统性能与稳定性。

weixin_30603633的博客 276

导带、价带

价带是电子的“束缚态”能量区间,决定材料的化学性质;导带是电子的“自由态”能量区间,直接决定材料的导电能力;禁带宽度则是区分金属、半导体与绝缘体的核心参数。通过调控能带结构(如掺杂、应变工程),可设计出具有特定电学和光学特性的功能材料,推动电子信息、能源转换等领域的技术革新。

weixin_51552564的博客 5116

代码随想录算法训练营第四天 24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题 02.07. 链表相交 142.环形链表II

对于有增删改,用虚拟头结点而对于只有查操作的时候,无需使用。

U_L_Yxan的博客 2123

无需Python环境!纯C#上位机+OpenCVSharp4+ONNX Runtime实现YOLOv8摄像头实时流检测,工业级稳定

摘要 工业自动化C#开发中,传统Python方案实现视觉检测功能存在环境依赖、内存泄漏和性能不稳定等问题。本文提出基于.NET 8+OpenCVSharp4+ONNX Runtime的纯C#方案,通过实际案例验证其优势: 零Python依赖,支持离线部署 内存稳定(380MB/72h),检测延迟<80ms 检测精度达漏检率<0.1%,误检率<0.5% 保留原有业务逻辑代码,3天完成适配 方案采用分层架构设计,支持多种硬件平台和操作系统,提供从模型导出到部署的全流程指导,为工业视觉检测提供高

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 196

算法训练营Day4|24.两两交换链表中的节点,19.删除链表的倒数第N个节点,面试题 02.07. 链表相交,142.环形链表II

24.两两交换链表中的节点,19.删除链表的倒数第N个节点,面试题 02.07. 链表相交,142.环形链表II。数值相同,不代表指针相同。

weixin_43678826的博客 1969

小白也能懂!一步步教你用FPGA加速YOLO目标检测(入门篇)

安装到 PYNQ 开发板中。该库为 PYNQ 平台提供了对量化神经网络(如 YOLO)的硬件加速支持。确保你的电脑已连接到外网,如 WiFi 或热点(手机热点理论上也可用,未实测)。当你看到安装成功的提示后,打开 Jupyter Notebook,你会发现在。趁这个机会,泡了杯茶,刷了会儿手机,顺便感慨了一下开源社区的强大……页面中多出了一些新的项目文件夹 —— 这就是我们刚才安装的。参数,浅拷贝只克隆最近一次提交,减少数据量,避免超时问题。初始化,打开该文件,即可运行我们的Tiny YOLO。

FJN110的博客 1597

fatal: unable to access ‘https://github.com/‘: Recv failure: Connection was reset 解决方案

本文主要介绍了fatal: unable to access ‘https://github.com/’: Recv failure: Connection was reset 解决方案,希望能对使用github的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 2万+

代码随想录算法训练营day05 | 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II

思路:使用虚拟头结点会方便很多(图片截取自创建cur指针指向虚拟头结点,然后进行四步操作:步骤一:cur 的 next 指针指向值为2的节点;步骤二:值为2的节点的 next 指向值为1的节点;步骤三:值为1的节点的 next 指向值为3的节点;步骤四:cur向下移动两个节点,执行前三步;(注意:需要用临时节点 tmp 和 tmp1,先保存值为1的节点和值为3的节点,然后再执行四步骤。否则先执行完步骤一,就无法再找到值为1的节点了;同理,先执行完步骤二,就无法再找到值为3的节点了。

S1mpleboz的博客 1470

【YOLO目标检测全栈实战】68 模型量化:从FP32到INT8,精度不掉,速度翻倍

摘要: 模型量化能显著提升推理速度(如YOLOv5s帧率从15FPS提升至38FPS),但需避免三大误区:1)校准集需覆盖实际场景,而非随机采样;2)敏感层(如检测头)应保留FP32精度;3)预处理必须与量化前后一致。通过混合精度量化(Backbone用INT8,检测头用FP32)和逐通道量化,可实现<1%的mAP损失。关键步骤包括校准数据准备、量化感知训练及逐层精度评估,最终在Jetson Nano等边缘设备上实现速度与精度的平衡。

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 145

代码随想录训练营 Day4打卡 链表part02 24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题 02.07. 链表相交 142.环形链表II

代码随想录训练营 Day4打卡 链表part02 24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题 02.07. 链表相交 142.环形链表II

qq_42952637的博客 1106

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

代码随想录算法训练营第四天 | LeetCode24.两两交换链表中的节点、LeetCode19.删除链表中的倒数第N个节点、面试题02.07.链表相交、LeetCode142.环形链表II

题型关键理念移除链表元素虚拟头节点设计链表(增删改查)虚拟头节点翻转链表双指针两两交换链表中的节点虚拟头节点操作多个元素删除链表中倒数第N个节点快慢指针链表相交指针对齐判断链表是否有环以及入口节点快慢指针链表最大的特点是在内存中是离散分布的,通过指针将其串联起来,导致其增删改操作比较简单,复杂度为O(1),而查询操作需要从头开始遍历一遍,复杂度为O(n)。相较于数组,后者增删操作比较复杂,需要整体的移动,复杂度为O(n),而改查操作比较简单,复杂度为O(1)。

zhuabazhuabahuo的博客 1901

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

代码随想录算法训练营第四天|24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II、总结

注意不要断链,更新之前用临时指针存储节点。如何找到倒数第n个节点注意虚拟头节点定义最后返回的头节点是dummy ->nextfree掉dummy面试题 02.07. 链表相交如何找到相交节点。142.环形链表II双指针思路。

weixin_46027322的博客 1527

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

代码随想录算法训练营第四天 |24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题 02.07. 链表相交 142.环形链表II

相遇时: slow指针走过的节点数为: x + y, fast指针走过的节点数:x + y + n (y + z),n为fast指针在环内走了n圈才遇到slow指针。,从头结点出发,fast指针每次移动两个节点,slow指针每次移动一个节点,如果 fast 和 slow指针在途中相遇 ,说明这个链表有环。双指针,先让两个指针各自指向头结点,然后让两条链表末端对齐,求出链表长度插值,让curA移动到curB位置对齐的地方。给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。

maiyunzhang的博客 1070

代码随想录算法训练营第四天 | 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II

代码随想录算法训练营第四天 | 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II

北天的博客 1043

代码随想录算法训练营Day4 | Leetcode 24两两交换链表中的节点 、19删除链表的倒数第N个节点 、 142环形链表II、 面试题 02.07. 链表相交

Leetcode 24两两交换链表中的节点 、19删除链表的倒数第N个节点 、 142环形链表II、 面试题 02.07. 链表相交的思路细节及复杂度分析

叽里呱啦大王的博客 1237

代码随想录算法训练营第四天 | 24. 两两交换链表中的节点 ;19.删除链表的倒数第N个节点;02.07. 链表相交(面试题);142.环形链表II

1. 24. 两两交换链表中的节点 :用虚拟头结点;使用temp指针保存临时节点。建议先看视频。2. 19.删除链表的倒数第N个节点:双指针的操作;注意,删除第N个节点,那么我们当前遍历的指针一定要指向 第N个节点的前一个节点,建议先看视频。3. 02.07. 链表相交(面试题):本题没有视频讲解,大家注意 数值相同,不代表指针相同。4. 142.环形链表II :双指针的操作;是链表比较有难度的题目,需要多花点时间理解 确定环和找环入口,建议先看视频。

weixin_44334392的博客 1665

【链表】|代码随想录算法训练营第4天| 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点 、02.07. 链表相交 、142.环形链表II、【总结】

文章讲解。

677

代码随想录算法训联营第四天|LeetCode24. 两两交换链表中的节点 LeetCode19.删除链表的倒数第N个节点 面试题02.07. 链表相交 LeetC142.环形链表II

代码随想录|LeetCode24. 两两交换链表中的节点 LeetCode19.删除链表的倒数第N个节点 面试题02.07. 链表相交 LeetC142.环形链表II文章链接

2301_79647020的博客 1208

代码随想录算法训练营第四天 | 24. 两两交换链表中的节点,19. 删除链表的倒数第 N 个结点,02.07. 链表相交,142. 环形链表 II [链表篇]

两两交换链表节点,删除链表节点,链表相交,环形链表,链表操作,双指针法,快慢指针

leehal的博客 1171

代码随想录算法训练营第四天|24. 两两交换链表中的节点,19.删除链表的倒数第N个节点,面试题 02.07. 链表相交,142.环形链表II,总结

最近的题比较难,我只能边学边做边写博客(;′⌒`)。目录24. 两两交换链表中的节点题目:思路:19.删除链表的倒数第N个节点题目:思路:面试题 02.07. 链表相交题目:思路:142.环形链表II题目:思路:总结给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。首先老两样----dummyhead结点和current结点,方便之后的操作。用current结点对链表进行遍历,一次while循环current结点移动两位。注意

2302_77519551的博客 1204

代码随想录算法训练营第四天|LeetCode 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07链表相交、142.环形链表II

可以使用快慢指针法,分别定义 fast 和 slow 指针,从头结点出发,fast指针每次移动两个节点,slow指针每次移动一个节点,如果 fast 和 slow指针在途中相遇 ,说明这个链表有环。当然,还是需要构建虚拟头节点,采用双指针,让一个先走N,然后两个同时再将剩下的走完,就确定了N-1的位置。1、获取两个链表的差值,设置两个指针,让长链表的指针先走差值,然后两个指针一起走,看看会不会相遇。,n为fast指针在环内走了n圈才遇到slow指针, (y+z)为 一圈内节点的个数A。

m0_56399733的博客 1296

代码随想录算法训练营第四天|Leetcode24 两两交换链表中的节点、Leetcode19 删除链表的倒数第N个节点、Leetcode面试题 02.07. 链表相交、Leetcode142 环形链表

输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3。输入:intersectVal = 2, listA = [0,9,1,2,4], listB = [3,2,4], skipA = 3, skipB = 1。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。题目描述:给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。

Demok123的博客 1009
上一篇: 代码随想录算法训练营第三天 | 203.移除链表元素 707.设计链表 206.反转链表
下一篇: 代码随想录算法训练营第六天 |● 哈希表理论基础 ● 242.有效的字母异位词 ● 349. 两个数组的交集 ● 202. 快乐数 ● 1. 两数之和
Xalileetcode
博客等级 码龄7年 482粉丝 43原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值