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

有多少人自己做电影网站河北新亚建设集团网站

有多少人自己做电影网站,河北新亚建设集团网站,国际新闻头条最新热点新闻,企业vi系统设计公司问题描述 给定一个已排序的链表的头节点 head,要求删除所有重复元素,使得每个元素只出现一次。返回处理后的已排序链表。下面是leetcode题目如果感兴趣可以尝试一下。 方法一:递归解法 思路 递归法通过维护一个 ArrayList 来记录已遍历过的…

问题描述

给定一个已排序的链表的头节点 head,要求删除所有重复元素,使得每个元素只出现一次。返回处理后的已排序链表。下面是leetcode题目如果感兴趣可以尝试一下。

方法一:递归解法

思路

递归法通过维护一个 ArrayList 来记录已遍历过的节点值。具体步骤如下:

  1. 将当前节点的值加入列表。

  2. 递归处理下一个节点:

    • 如果下一个节点的值已存在于列表中,则跳过该节点(修改前驱节点的指针)。

    • 否则,继续递归处理。

class Solution {public ListNode deleteDuplicates(ListNode head) {if (head == null) return head;ArrayList<Integer> numbers = new ArrayList<>();numbers.add(head.val);deletenode(head, head.next, numbers);return head;}private void deletenode(ListNode pre, ListNode node, ArrayList<Integer> numbers) {if (node == null) return;if (numbers.contains(node.val)) {pre.next = node.next; // 删除当前节点deletenode(pre, node.next, numbers); // 继续处理下一个节点} else {numbers.add(node.val);deletenode(node, node.next, numbers); // 更新前驱节点}}
}

复杂度分析

  • 时间复杂度:O(n²),因为 ArrayList.contains() 的时间复杂度为 O(n)。

  • 空间复杂度:O(n),递归调用栈和列表的空间。

缺点

  • 递归深度可能达到链表长度,导致栈溢出。

  • 重复值检查效率低。

方法二:迭代解法

思路

通过迭代遍历链表,使用 ArrayList 记录已存在的值。遇到重复值时,直接修改前驱节点的指针。

class Solution {public ListNode deleteDuplicates(ListNode head) {if (head == null) return head;ArrayList<Integer> numbers = new ArrayList<>();numbers.add(head.val);ListNode pre = head;ListNode node = head.next;while (node != null) {if (numbers.contains(node.val)) {pre.next = node.next; // 跳过重复节点} else {numbers.add(node.val);pre = node; // 更新前驱节点}node = node.next; // 移动指针}return head;}
}

复杂度分析

  • 时间复杂度:O(n²),ArrayList.contains() 的线性检查导致性能瓶颈。

  • 空间复杂度:O(n),存储已遍历值的列表。

缺点

  • 空间复杂度较高,不适用于大规模数据。

方法三:直接遍历(最优解)

思路

利用链表已排序的特性,只需比较相邻节点的值:

优点

  • 若当前节点与下一节点的值相同,则跳过下一节点。

  • 否则,移动指针继续遍历。

    class Solution {public ListNode deleteDuplicates(ListNode head) {if (head == null) return head;ListNode cur = head;while (cur.next != null) {if (cur.val == cur.next.val) {cur.next = cur.next.next; // 删除重复节点} else {cur = cur.next; // 移动指针}}return head;}
    }

    复杂度分析

  • 时间复杂度:O(n),只需一次遍历。

  • 空间复杂度:O(1),无需额外空间。

  • 高效且节省内存,完美利用链表有序的特性。

方法对比

方法时间复杂度空间复杂度适用场景
递归解法O(n²)O(n)小规模数据,不推荐实际使用
迭代+ArrayListO(n²)O(n)未排序链表,但性能较差
直接遍历O(n)O(1)已排序链表,最优选择

总结

对于已排序链表,方法三是最优解,其时间复杂度和空间复杂度均为最优。递归法和迭代法虽然逻辑简单,但在处理大规模数据时性能不足。建议根据链表是否有序选择合适的算法。


文章转载自:

http://0IdrCMLN.bhwLL.cn
http://nDUvSfXe.bhwLL.cn
http://tvFgX8Wt.bhwLL.cn
http://mvAm2VZU.bhwLL.cn
http://qq9qWsNp.bhwLL.cn
http://BVbjR7jX.bhwLL.cn
http://44V3lDS3.bhwLL.cn
http://DwQ0pTvt.bhwLL.cn
http://EElo8Bi7.bhwLL.cn
http://8UVPyqHl.bhwLL.cn
http://sULZRIbC.bhwLL.cn
http://szmndWwX.bhwLL.cn
http://nSNqHdM0.bhwLL.cn
http://49R4ERPV.bhwLL.cn
http://EZe9lBpO.bhwLL.cn
http://qJbPRTSV.bhwLL.cn
http://gVbffUt3.bhwLL.cn
http://UfkenhYv.bhwLL.cn
http://i7oAy8cW.bhwLL.cn
http://208fUtK8.bhwLL.cn
http://yitia9dW.bhwLL.cn
http://T70BYrXz.bhwLL.cn
http://hAadRRi2.bhwLL.cn
http://6SDbJ9hH.bhwLL.cn
http://PohksQyC.bhwLL.cn
http://RPLQCgPh.bhwLL.cn
http://xe0AhxEp.bhwLL.cn
http://tCcrJg5s.bhwLL.cn
http://Dn9uaJLe.bhwLL.cn
http://bXodVO1Q.bhwLL.cn
http://www.dtcms.com/wzjs/766062.html

相关文章:

  • 商城网站的建设wordpress如何生成单页的网站地图
  • 户网站建设的不全.php手机网站源码下载
  • 建设网站可选择的方案电影网站源码access
  • 周口市住房和城乡建设局门户网站专业集团门户网站建设企业
  • 搭建三合一网站网站统计
  • 成功的网站不仅仅是优化排毕业设计论文网站
  • 国际购物网站平台有哪些wordpress安装主体
  • 平泉建设局网站做书籍封皮的网站
  • 合肥网站优化公司三门峡网站建设价格
  • 创什么网站吸引人黑龙江建设网官方
  • 简单的企业网站制作安装下载app
  • 做网站哪间好网站的设计亮点
  • tomcat做的网站打不开了互动网站制作
  • 做网站多少宽带够美食网站开发的难点
  • 什么网站是专门做评论赚钱的建筑考试
  • 精品课程网站开发关键技术电商一共有什么平台
  • 关于电子商务网站建设的现状seo如何优化排名
  • 做艺术字的网站华为云建站和阿里云建站区别
  • 青岛本地网站基于html的网站设计
  • 东莞专业网站建设推广合肥网站设计网址
  • 网站营销单页面留言网址免费生成app
  • 怎么样给一个网站做横向导航栏佛山关键词排名方案
  • 网站备案需要年检吗设计服务网站
  • 网站备案表格样本刷网站关
  • 营销企业网站建设二手车 网站开发
  • 保温管有哪些网站做python小学生入门教程
  • html5响应式网站psd推广方案的内容有哪些
  • 台州网站制作网站建设镇江方圆建设监理咨询有限公司网站
  • 织梦网站被黑什么视频直播网站做挣钱
  • 建培网揭阳百度关键词优化