当前位置: 首页 > news >正文

网站建设客户源网站需要条件

网站建设客户源,网站需要条件,注册一个免费的网站,建设银行宁夏分行网站单链表的反转#xff08;面试常出#xff09;#xff1a; ​ 单链表的反转#xff0c;可以通过很多种方法实现。包括迭代法#xff0c;递归法#xff0c; 迭代法#xff1a; 定义三个指针#xff1a;prev、current和next#xff0c;它们分别表示前一个节点、当前节点…单链表的反转面试常出 ​ 单链表的反转可以通过很多种方法实现。包括迭代法递归法 迭代法 定义三个指针prev、current和next它们分别表示前一个节点、当前节点和下一个节点。 初始化时prev为nullcurrent为头节点。 在循环中不断将current的next指针指向prev然后依次向后移动prev、current和next指针。 当next为空时说明已经到达链表末尾此时的prev指向就是反转后的头节点。 其实就像是先将第一个节点指向null就像最后一个节点它也是next null的然后一直这样子重复转一次就后退让下一个节点去转方向指向前面的。 public ListNode reverse(Node head) {Node prev null;Node current head;while (current ! null) {Node nextTemp current.next; // 暂存当前节点的下一个节点current.next prev; // 将当前节点指向前一个节点prev current; // 更新prev为当前节点current nextTemp; // 更新current为原先的下一个节点}return prev; // 返回反转后的头节点}// 补充一个力扣第92题加深理解让你把单链表部分元素反转其他部分不变 ​ 这里依旧可以使用迭代的方法就是要先通过遍历去找到反转开始的位置和结束的位置用辅助节点记录反转区间的前置节点和反转区间的尾节点。然后反转区间的链表反转即可反转后接上前面的部分。 public ListNode reverseBetween(ListNode head, int left, int right) {ListNode current head;ListNode prev null;for (int i 1; i left; i) {prev current;current current.next;}// 反转区间的前置节点ListNode tailPrev prev;// 反转区间的尾节点ListNode tail current;// 同样的迭代原理只是范围要自定义。for (int j left; j right; j) {ListNode newTemp current.next;current.next prev;prev current;current newTemp;}// 反转区间的头节点ListNode headReverse prev;tail.next current;if (tailPrev ! null) {tailPrev.next headReverse;return head;} else {return headReverse;} } 递归法也是力扣第206题 ​ 递归的关键是看整体找出整体的大块东西。可以先写一个伪代码过一遍思路。你就写基础情况然后要的操作再看子问题递归调用放的位置即可。 **实操技巧**第一步先找到可以看作整体的就是原理一样的。去设计递归调用超级操作第二步去设计微操作去看一份整体的怎么实现即可。后面就去找到题目中的基础情况它相当于最里面的超级操作了也基本就是剩下一个的情况那种。 相关概念 ​ 1.首先先明确函数的意义还要原问题和子问题。在这里原问题是给整个链表反转子问题是给每一个字节进行反转。 ​ 2.基础情况也就是要找到结束的条件。就是当数据规模很小的时候能结束递归返回答案。 ​ 3.递归调用超级操作怎么搞定中间的递归操作。但是唉人脑进去递归出不来的。所以得完把递归的过程看成一个整体不要去想里面怎么运行的。 ​ 4.微操作。也就是操作的方法。 ​ 比如汉诺塔问题你有2个叠在一起的时候就是先把小的放中间大的放右边再把小的放大的上面。那这个时候假如他有一堆你就是把小的一堆给放到中间让最大的去到最右边垫底。然后小的一堆整体放到大的上面。而那一堆小的移动其实就是整个问题的子问题它其实就是可以用递归重复一个原理完成。 此题思路如下 // 定义输入一个单链表头结点将该链表反转返回新的头结点 ListNode reverse(ListNode head) {// 基础情况也就是结束的代码。// 链表为空或者只有一个节点时直接返回头节点即可。if (head null || head.next null) {return head;}// 递归调用超级操作ListNode last reverse(head.next);// 而其实当你写一个伪代码时候你也可以发现。下面的这个其实就是反转需要的的操作可以写一个伪代码微操作。具体操作方法 operate(head.next); head.next.next head;head.next null;return last; }
http://www.zqtcl.cn/news/695822/

相关文章:

  • 网站后台被百度蜘蛛抓取哪个做网站比较好
  • 企业建设网站的需求分析百度免费发布信息平台
  • 网站建设交易中心上海装修公司排行榜
  • 桂林论坛网站有哪些在线设计平台用户分析
  • wap网站的开发去加网 wordpress
  • 博客网站建设设计论文总结php mysql做网站登录
  • 海南智能网站建设公司wordpress 如何使用php版本号
  • 河南网站开发培训app 软件开发
  • 购物网站功能介绍一流的高密网站建设
  • 电影网站怎么做优化wordpress 去掉w
  • 永久网站空间标书制作员工资很低吗
  • 做网站用到ps么淘宝优惠网站怎么做
  • jsp 淘宝网站验证码 设计搜索引擎排名
  • pdf怎么做电子书下载网站北京成立公司
  • 网站后台附件无法上传阿克苏建设网站
  • 网站和网址有什么不同佛山狮山网站建设
  • 有免费的微网站是什么可以做长图的网站
  • 南昌手机建站模板18种禁用软件黄app
  • 备案的域名做电影网站wordpress伪静态cdn配置
  • 国家城乡住房建设部网站百度关键词首页排名
  • 安卓软件开发需要学什么软件北京百度推广优化公司
  • 用asp.net 做网站wordpress网址缩短
  • 中国工程建设交易信息网站仿蘑菇街wordpress主题
  • 网站需要怎么做做普通网站公司吗
  • 网站收录平台方法网站建设是不是都需要交费
  • 上海 政务网站建设情况营销模式有哪些 新型
  • 国内做免费视频网站有哪些苏州娱乐场所最新消息
  • 福田建设网站宿迁网站建设案例
  • 建立企业网站的目的和意义人力资源外包收费标准
  • 网站开发前后端分离湘潭seo磐石网络