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

软件资源网站推荐网络工具

软件资源网站推荐,网络工具,黑科技引流推广神器怎么下载,自己建的网站百度查找不到一、回文链表 234.回文链表 两种解法 解法1:时间复杂度O(n) 空间复杂度O(n) 遍历链表,计算链表长度,创建同样长度大小的数组,用数组存储链表中所有元素,之后双指针遍历链表,一个从头开始,一…

一、回文链表

234.回文链表

两种解法

解法1:时间复杂度O(n) 空间复杂度O(n)

遍历链表,计算链表长度,创建同样长度大小的数组,用数组存储链表中所有元素,之后双指针遍历链表,一个从头开始,一个从尾开始,比较元素是否相等;

class Solution {public boolean isPalindrome(ListNode head) {ListNode curr = head;int len = 0;if(head.next == null){return true;}while(curr != null){len++;curr = curr.next;}//重置currcurr = head;int[] nums = new int[len];for(int i = 0;i < nums.length;i++){if(curr != null){nums[i] = curr.val;curr = curr.next;}else{break;}}for(int i = 0,j = nums.length - 1;i < j;i++,j--){if(nums[i] != nums[j]) return false;}return true;}
}

注意⚠️:求完链表长度后,记得重置curr; 

解法2:时间复杂度O(n) 空间复杂度O(1)

快慢指针法(⭐️)

定义两个指针,快指针fast,慢指针slow,初始指向头结点,只要fast != null && fast.next != null,那么慢指针每次移动一个结点,快指针每次移动两个结点;直到fast不满足条件,此时,慢指针指向中点(链表个数为奇数),或者中点偏右的位置(链表个数为偶数);

之后,反转后半部分链表,然后比较前后两部分的数值,相等,则为回文链表,否则不是;

使用快慢指针法找到链表的中点的原理:

快指针的速度是慢指针的 2 倍所以当快指针走完全程时,慢指针刚好走了一半。

慢指针走过的路程为 x,那么快指针就是2x,2x = len,则x = 1/2 len;

class Solution {public boolean isPalindrome(ListNode head) {//快慢指针ListNode slow = new ListNode();ListNode fast = new ListNode();if(head == null || head.next == null){return true;}slow = head;fast = head;while(fast != null && fast.next != null){slow = slow.next;fast = fast.next.next;}//若链表为奇数个 此时slow指向中间点//若链表为偶数个 此时slow指向中间偏右的结点//反转后半部分链表ListNode pre = null;ListNode curr = slow;while(curr != null){ListNode temp = curr.next;curr.next = pre;pre = curr;curr = temp;}//此时pre指向反转后链表的头部//比较前后两部分链表ListNode pA = head;ListNode pB = pre;while(pB != null){if(pA.val != pB.val){return false;}pA = pA.next;pB = pB.next;}return true;}
}

注意⚠️:在比较前后两部分链表时,while中的判断条件只能是pB != null;

如果是pA != null,那么当链表个数为偶数时:1 2 3 4;

slow最后指向3,后半部分反转后,整体链表结构为:

前:1 --> 2 -->3 --> null       

后:4 ---> 3 --> null

pA遍历的是前半部分的链表,pB遍历后半部分,当pB指向null时,pA指向3,不为空,进入循环,pB.val就会报错:空指针异常; 

http://www.dtcms.com/wzjs/400638.html

相关文章:

  • 政府网站是哪个建设的南宁网
  • 学校网站模板 中文谷歌搜索引擎为什么国内用不了
  • 网站建设易网拓武汉seo系统
  • 自助建网站教程上海seo顾问推推蛙
  • 做网站电话广东东莞最新情况
  • seo网站建设课程凡科网微信小程序
  • 怎样创办网站星巴克营销策划方案
  • 如何做网站网页表白网站运营主要做什么
  • 国外购物网站排行榜橘子seo
  • Dreamweaver做网站教程今日郑州头条最新新闻
  • 商检局做产地证的网站上饶seo博客
  • 优化国内访问wordpress石狮seo
  • 学做美食网站千锋教育地址
  • 建立个网站需要多少钱google高级搜索
  • ftp上传php网站中国最新消息
  • 如何做彩票网站的教程佛山seo代理计费
  • 外宣做网站宣传百度网站排名搜行者seo
  • 网站建设经理b站推广费用一般多少
  • 网站开发工作如何好的推广方式
  • 做网站 二维码登录重庆seowhy整站优化
  • 网站备案有用营销策略理论
  • 什么软件做美食视频网站一个产品营销策划方案
  • 徐州网站开发设计平台下载百度导航最新版本
  • 千牛网站上的店铺推广怎么做化工网站关键词优化
  • 深圳网站设计廊坊公司深圳网站优化推广
  • 东莞做外贸网站的公司媒介
  • 互联网的发展趋势广州网站优化公司如何
  • 做设计找图有哪些网站快速排名上
  • wap入口baiduseoguide
  • 网站管理工作是具体应该怎么做网店运营推广平台