判断单链表是否存在环及寻找环的入口点

CS5523实战:如何用国产芯片完美替代LT8911设计MIPI转eDP电路(附原理图) 本文详细介绍了使用国产芯片CS5523完美替代LT8911进行MIPI转eDP电路设计的实战经验。文章从芯片选型、核心特性对比入手,深入剖析了电源时钟设计、MIPI/eDP接口的PCB布局与信号完整性要点,并提供了完整的原理图参考和调试排错指南,为硬件工程师实现国产化替代提供了清晰可行的方案。 阅读详情

判断链表是否存在环,有如下几种解法:
1. 遍历链表,将已经遍历过的节点放在一个hash表中,如果一个节点已经存在hash表中,说明有环。时间:O(n) 空间:O(n)
2. 反转链表。 时间O(n),空间O(1),使用三个指针。(ref:  http://www.cppblog.com/tx7do/archive/2009/01/06/71280.html)

    单链表反转:下面给出两种可能的实现。

    普通版:

  1. void reverse(node*& head)  
  2. {  
  3.     if ( (head == 0) || (head->next == 0) ) return;// 边界检测  
  4.     node* pNext = 0;  
  5.     node* pPrev = head;// 保存链表头节点  
  6.     node* pCur = head->next;// 获取当前节点  
  7.     while (pCur != 0)  
  8.     {  
  9.         pNext = pCur->next;// 将下一个节点保存下来  
  10.         pCur->next = pPrev;// 将当前节点的下一节点置为前节点  
  11.         pPrev = pCur;// 将当前节点保存为前一节点  
  12.         pCur = pNext;// 将当前节点置为下一节点  
  13.     }  
  14.     head->next = NULL;  
  15.     head = pPrev;  
  16. p;}  
    递归版:

  1. node* reverse( node* pNode, node*& head)  
  2. {  
  3.     if ( (pNode == 0) || (pNode->next == 0) ) // 递归跳出条件  
  4.     {  
  5.         head = pNode; // 将链表切断,否则会形成回环  
  6.         return pNode;  
  7.     }  
  8.   
  9.     node* temp = reserve(pNode->next, head);// 递归  
  10.     temp->next = pNode;// 将下一节点置为当前节点,既前置节点  
  11.     return pNode;// 返回当前节点  
  12. }  

      使用反转链表的方法, 每过一个节点就把该节点的指针反向。若存在环,反转next指针最终会走到链表头部。若没有环,反转next指针会破坏链表结构(使链表反向), 所以为还原链表,需要把链表再反向一次。 这种方法的空间复杂度是O(1), 实事上我们使用了3个额外指针;而时间复杂度是O(n), 我们最多2次遍历整个链表(当链表中没有环的时候)。下面给出一个实现,但最大的问题是:若存在环,则无法还原到链表的原状态。

  1. bool reverse(Node *head) {  
  2.  Node *curr = head;  
  3.  Node *next = head->next;  
  4.  curr->next = NULL;  
  5.   
  6.  while(next!=NULL) {  
  7.   if(next == head) { /* go back to the head of the list, so there is a loop */  
  8.     next->next = curr;  
  9.     return true;  
  10.   }  
  11.   
  12.   Node *temp = curr;  
  13.   curr = next;  
  14.   next = next->next;  
  15.   curr->next = temp;  
  16.  }  
  17.   
  18.  /* at the end of list, so there is no loop, let's reverse the list back */  
  19.  next = curr->next;  
  20.  curr ->next = NULL;  
  21.  while(next!=NULL) {  
  22.   Node *temp = curr;  
  23.   curr = next;  
  24.   next = next->next;  
  25.   curr->next = temp;  
  26.  }  
  27.   
  28.  return false;  
  29. }  



3. 快慢指针。 时间O(n),空间O(1),使用两个指针。(ref: http://blog.youkuaiyun.com/mingming_bupt/article/details/6331333)

    判断环的存在:设置两个指针(fast, slow),初始值都指向头,slow每次前进一步,fast每次前进二步。如果链表存在环,则fast必定先进入环,而slow后进入环,两个指针必定相遇。(当然,fast先行头到尾部为NULL,则是无环链表)。

  1. bool IsExitsLoop(slist * head)  
  2. {  
  3. slist * slow = head , * fast = head;  
  4.   
  5. while ( fast && fast -> next )  
  6. {  
  7. slow = slow -> next;  
  8. fast = fast -> next -> next;  
  9. if ( slow == fast ) break ;  
  10. }  
  11.   
  12. return ! (fast == NULL || fast -> next == NULL);  
  13. }   
     寻找环的入口点 : 当fast按照每次2步,slow每次一步的方式走,发现fast和slow重合,确定了单向链表有环路。接下来,让fast回到链表的头部,重新走,每次步长1,那么当fast和slow再次相遇的时候,就是环路的入口了。

证明:在fast和slow第一次相遇的时候,假定slow走了n步,环路的入口是在p步,那么

           slow走的路径: p+c = n; c为fast和slow相交点 距离环路入口的距离

           fast走的路径: p+c+k*L = 2*n; L为环路的周长,k是整数

          显然,如果从p+c点开始,slow再走n步的话,还可以回到p+c这个点。

          同时,fast从头开始走,步长为1,经过n步,也会达到p+c这点。

          显然,在这个过程中fast和slow只有前p步骤走的路径不同。所以当p1和p2再次重合的时候,必然是在链表的环路入口点上。

  1. slist * FindLoopPort(slist * head)  
  2. {  
  3. slist * slow = head, * fast = head;  
  4.   
  5. while ( fast && fast -> next )  
  6. {  
  7. slow = slow -> next;  
  8. fast = fast -> next -> next;  
  9. if ( slow == fast ) break ;  
  10. }  
  11.   
  12. if (fast == NULL || fast -> next == NULL)  
  13. return NULL;  
  14.   
  15. slow = head;  
  16. while (slow != fast)  
  17. {  
  18. slow = slow -> next;  
  19. fast = fast -> next;  
  20. }  
  21.   
  22. return slow;  
  23. }  

转载:http://blog.youkuaiyun.com/xudacheng06/article/details/7706245
uniapp [安卓苹果App端] - 实现判断并开启消息通知/提示权限,监测通知权限未开启时弹框提示用户并引导用户跳转至设置界面,uniApp检查通知权限+提示是否打开+点击跳转设置(详细示例代码) uni-app判断有无通知权限,并进行设置,设置手机通知权限,开启通知权限,uni-app解决权限问题,uniapp 拉起授权(拒绝后重新开启权限)uniApp打包的手机app如果用户没开启通知权限、引导用户开启,uni-app动态打开应用通知权限,拒绝后跳转设置页面,uniapp获取通知栏权限,苹果ios系统打开通知权限,被拒绝怎么办,uniapp安卓判断通知权限,uniapp打包的APP引导用户打开手机通知权限,uniapp权限被拒绝,跳转手机设置页面 权限设置,IOS应用内跳转系统设置,uni-app 阅读详情

相关推荐

TM1621/HT1621 段码LCD驱动器

TM1621 LCD 驱动器

qq_45325304的博客 1万+

数据结构及算法:链表相关(如何判断单链表是否存在环、找出入环点、链表相交等问题)

目录 一、如何判断单链表是否存在环 方法一、穷举遍历 方法二、哈希表缓存 方法三、快慢指针(推荐) 方法四、Set集合大小变化 二、如何找出有环链表的入环点? 方法一、用HashSet来解决 方法二、计算循环(快慢指针) 情况一:多走一个环 情况二、当fast比slow 多走n个环 代码实现 三、如果存在环,求出环上节点的个数; 四、如果存在环,求出链表的长度; ...

天才小站 1561

如何让 RTX 5090 开启 PCIE P2P 以加速多卡通信

RTX 5090 基于新的 Blackwell 架构。NVIDIA 出于对某些主板兼容性(如 IOMMU、Resizable BAR 策略)的保守考虑,**屏蔽了 5090 的 BAR1 P2P 功能**。 我们需要通过 Patch 驱动源码,强制开启这一隐藏功能。 开启 P2P 后,PyTorch 的集合通信算子(Multi-GPU 训练的核心)延迟显著降低,**All-Reduce 甚至降低了 60% 以上**。

Hi20240217的博客 1715

数据结构_完成单链表的后续操作实现以及链表面试题

1.初始化链表2.尾插一个元素到链表中3.尾删一个元素4.头插一个元素5.头删一个元素6.查找元素在链表中的位置7.在pos之前插入元素8.在pos之后插入元素 9.删除指定位置的元素10.删除指定值的元素11.指定值的所有相同元素都删掉.12.判定链表是否为空13.求链表的元素个数14.逆序打印单链表15.不允许遍历链表, 在 pos之前插入16.实现约瑟夫环17.单链表逆置18.单链表逆置(删...

qq_40995354的博客 439

知识图谱实战:从零搭建一个企业级金融风控图谱(附完整代码)

本文提供了一份从零构建企业级金融风控知识图谱的实战指南。通过使用Neo4j图数据库和Python,手把手教你整合多源数据、设计数据模型,并利用Cypher查询与图算法挖掘隐藏的关联风险与欺诈网络,附有完整代码,助力金融科技从业者实现从数据孤岛到全局风险洞察的升级。

weixin_29095587的博客 356

RNA-seq分析:Step4(比对)

预处理之后的fastq文件,可以使用HISAT2软件将reads比对至参考基因组上。HISAT2软件将reads比对至参考基因组上的步骤如下:1. 对参考基因组进行建索引。对参考基因组进行预处理,生成索引文件,包括基因组序列的FM索引和SA索引。2. 将原始的reads进行预处理。包括去除接头序列、去除低质量的碱基,以及进行过滤,得到质量较高的、可靠的reads。3. 利用建立的FM索引和SA索引,将处理后的reads与参考基因组进行比对。首先,通过FM索引,快速找到与reads匹配的可能位置;

沉香best的博客 2599

判断单链表中是否有环,找到环的入口节点

这类问题通常使用双指针的方法,即一个快指针一个慢指针。faster = faster.next.next;slower = slower.next;“公理”:两指针相遇时,快指针走过的路程为慢指针的2倍。链表有环时,有以下3中情况,右边和下边都是第一种的特例,下文以第一种为讨论对象。1.判断是否有环两个指针开始时均指向头节点,快指针每次跨2个节点,慢指针每次跨1个节点。判断逻辑如下;while (...

少年乖 4915

【从零到一】Jetson Nano上YOLOv5部署完全攻略:零基础小白也能玩转边缘AI推理

文章摘要: 本文详细介绍了在Jetson Nano边缘设备上部署YOLOv5目标检测模型的完整流程。从硬件准备、系统镜像烧录、基础环境配置,到CUDA/cuDNN验证、Python虚拟环境搭建及PyTorch安装,逐步指导开发者完成部署准备。教程兼顾理论原理与实践操作,提供Python和C++两种实现方案,并涵盖TensorRT优化、实时检测等生产级应用场景,帮助零基础开发者快速掌握边缘AI推理技术,实现高性能目标检测应用。

LXY_LOVE36的博客 367

判断链表是否有环

判断链表是否有环的解法有很多,下面归纳几种常见算法。 判断链表是否存在环 方法一:通过双循环遍历完成,外层循环从头结点开始遍历,对于遍历到一个新节点newNode,内层循环都要从头结点遍历到该新节点的上一个节点head。如果链表无环,则newNode和head永不相等,否则就会相等。时间复杂度为O(n^2)。 public class LinkListCycle { public static class Node { private int data; pr

MAX_VALUE的博客 8406

# YOLOv11-seg改进系列 | 引入CVPR MetaFormer的C3k2_PoolingFormerCGLU模块,池化Token混合+CGLU门控MLP

本文引入 CVPR 2022 论文(MetaFormer/PoolFormer)提出的 MetaFormer 元架构设计,以Pooling Token 混合器 + ConvolutionalGLU(CGLU)MLP构成,将其封装为,用于替换 YOLOv11-seg 的 C3k2 块。对比维度C3k2(基线)C3k2_PoolingFormerCGLU(本文)参数量(n scale)2.46M≈2.49M9.6≈9.69.7(+1.0%)架构范式单阶段卷积MetaFormer 双阶段。

qq_44224801的博客 843

AUTOSAR模式管理-EcuM多核处理及其他概念

因此,EcuM不请求状态。因此,BswM必须确保,例如,在调用EcuM_GoHalt或EcuM_GoPoll之前,必须将关机目标从其默认值更改为ECUM_STATE_SLEEP。对于ECU的关闭,BswM(位于主EcuM的同一个分区中)最终调用主核上的GoOff,该GoOff将请求分发给所有的从核。在ECU Manager模块的早期版本中,睡眠目标被特殊处理,因为在ECU中实现的睡眠模式取决于ECU的功能。在使用了外部的SBC控制相关的MCU的下电的时候,在OFF阶段最后调用SBC进入到Sleep的指令。

m0_49148264的博客 1340

判断单链表是否存在环,如果存在则寻找环的入口点,用快慢指针法

判断单链表是否存在环,如果存在则寻找环的入口点,用快慢指针法

nyist327的专栏 1459

10、犹豫双模糊TOPSIS算法:原理与实例解析

本文介绍了犹豫双模糊TOPSIS算法的基本原理与应用步骤,结合中国四家纺织公司的案例,详细解析了从构建犹豫双模糊决策矩阵、归一化处理、专家信息聚合,到确定正负理想解、计算距离与相对贴近度系数的完整决策流程。该方法有效应对决策者在评价过程中的犹豫性,适用于财务评估、项目选择等复杂多属性决策场景,具有较强的实用性和推广价值。

yhn45678901的博客 122

单链表判环及环入口

1.判断单链表内是否有环? 设置两个指针,一个快指针,一个慢指针,起初都指向头结点 让快指针一次走两步,满指针一次走一步,如果链表内有环的话,经过一定次数后,快慢指针会相遇,则证明链表内有环(可参照下图例子) struct ListNode { int val; ListNode* next; } class Solution{ public: bool hasCycle...

D_4_Y_的博客 369

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

判断链表中是否有环 ----- 有关单链表中环的问题

给定一个单链表,判断其中是否有环,已经是一个比较老同时也是比较经典的问题,在网上搜集了一些资料, 然后总结一下大概可以涉及到的问题,以及相应的解法。 首先,关于单链表中的环,一般涉及到一下问题: 1.给一个单链表,判断其中是否有环的存在; 2.如果存在环,找出环的入口点; 3.如果存在环,求出环上节点的个数; 4.如果存在环,求出链表的长度; 5.如果存在环,求出环上距离任意一个节点最远的点(对面节点); 6.(扩展)如何判断两个无环链表是否相交; 7.(扩展)如果相交,求出第一个相.

小猪观察员的博客 229

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

判断单链表是否存在环,判断两个链表是否相交问题详解(转载)

判断单链表是否存在环,判断两个链表是否相交问题详解(转载) 【摘要】有一个单链表,其中可能有一个环,也就是某个节点的next指向的是链表中在它之前的节点,这样在链表的尾部形成一环。1、如何判断一个链表是不是这类链表?2、如果链表为存在环,如果找到环的入口点?扩展:判断两个单链表是否相交,如果相交,给出相交的第一个点。 有一个单链表,其中可能有一个环,也就是某个节点的

589

深度学习工具包 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&#39;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(&#39;DeepLearnToolbox&#39;));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(&#39;state&#39;,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&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,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 = &#39;sigm&#39;;%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, &#39;Too big error&#39;);```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(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;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)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;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, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% 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&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 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, &#39;Too big error&#39;);```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(&#39;state&#39;,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, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,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, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,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, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % 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, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % 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, &#39;Too big error&#39;);%% 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(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % 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, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

单链表环相关

一、单链表问题 1️⃣给一个单链表,判断是否存在环。 2️⃣如果存在环,找出环的入口点。 3️⃣如果存在环,求出环上节点的个数。 4️⃣如果存在环,求出链表的长度。 5️⃣如果存在环,求出环上距离任意一个节点最远的点(对面节点)。 6️⃣如何判断两个无环链表是否相交。如果相交,求出第一个相交的节点。 二、判断时候有环(链表头指针为head) 1️⃣“快慢指针”法。就是有两个指针 fast 和 slow,开始的时候两个指针都指向链表头head,然后在每一步操作中 slow 向前走一步即:slow = slo

ChineseSoftware的博客 712

判断单链表是否存在环,判断两个链表是否相交问题详解

源http://www.cppblog.com/humanchao/archive/2008/04/17/47357.html 有一个单链表,其中可能有一个环,也就是某个节点的next指向的是链表中在它之前的节点,这样在链表的尾部形成一环。 问题: 1、如何判断一个链表是不是这类链表? 2、如果链表为存在环,如何找到环的入口点? 解答: 一、判断链表是否存在环,

Creek Shi 409

判断链表中环的存在

1、如何判断一个链表是不是这类链表?   2、如果链表为存在环,如果找到环的入口点? 解答: 一、判断链表是否存在环,办法为: 设置两个指针(fast, slow),初始值都指向头,slow每次前进一步,fast每次前进二步,如果链表存在环,则fast必定先进入环,而slow后进入环,两个指针必定相遇。(当然,fast先行头到尾部为NULL,则为无环链表)程序如下: boo

lsff Code World 899

笔面集锦:判断单链表里面是否有环及相关扩展题

源于网络 1.如何判断单链表里面是否有环? 设置两个指针(fast, slow),初始值都指向头,slow每次前进一步,fast每次前进二步,如果链表存在环,则fast必定先进入环,而slow后进入环,两个指针必定相遇。(当然,fast先行头到尾部为NULL,则为无环链表)程序如下: bool IsExitsLoop(slist *head) { slist *slow = ...

weixin_33881050的博客 83

判断链表中是否有环 -- 有关单链表中环的问题

转自:http://blog.youkuaiyun.com/doufei_ccst/article/details/10578315 给定一个单链表,判断其中是否有环,已经是一个比较老同时也是比较经典的问题,在网上搜集了一些资料, 然后总结一下大概可以涉及到的问题,以及相应的解法。 首先,关于单链表中的环,一般涉及到一下问题: 1.给一个单链表,判断其中是否有环的存在; 2.如果存在环,找出环的入口点; 3

1036
上一篇: 深入理解JVM内部结构
下一篇: 深入浅出单实例Singleton设计模式
panfengsoftware
博客等级 码龄20年 38粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值