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

有路由器做网站账户竞价托管哪里好

有路由器做网站,账户竞价托管哪里好,化妆品网站建设报告,网站建设运营的成本文章目录 题目思考实现1. 迭代方式实现链表翻转2. 递归方式实现链表翻转 Hello,大家好,我是阿月。坚持刷题,老年痴呆追不上我,今天继续链表:反转链表 题目 LCR 024. 反转链表 思考 翻转链表是一个常见的算法问题&a…

文章目录

  • 题目
  • 思考
  • 实现
    • 1. 迭代方式实现链表翻转
    • 2. 递归方式实现链表翻转

Hello,大家好,我是阿月。坚持刷题,老年痴呆追不上我,今天继续链表:反转链表

题目

LCR 024. 反转链表
在这里插入图片描述

思考

翻转链表是一个常见的算法问题,通常用于练习基本的数据结构操作

实现

在 Java 中可以通过迭代和递归两种方式来实现链表的翻转

1. 迭代方式实现链表翻转

  • 使用三个指针prevcurrnextTemp来逐步翻转链表。
    • prev初始化为null,表示新链表的末尾。
    • curr从头节点开始,逐步遍历整个链表。
    • 在遍历过程中,将当前节点的next指向前一个节点,并移动prevcurr到下一个节点。
class ListNode {int val;ListNode next;ListNode(int x) { val = x; }
}public class ReverseLinkedList {public static ListNode reverseList(ListNode head) {ListNode prev = null;ListNode curr = head;while (curr != null) {ListNode nextTemp = curr.next; // 保存下一个节点curr.next = prev; // 当前节点的next指向前一个节点prev = curr; // 前一个节点移动到当前节点curr = nextTemp; // 当前节点移动到下一个节点}return prev; // 返回新的头节点}public static void main(String[] args) {// 构建测试链表:1 -> 2 -> 3 -> 4 -> 5ListNode head = new ListNode(1);head.next = new ListNode(2);head.next.next = new ListNode(3);head.next.next.next = new ListNode(4);head.next.next.next.next = new ListNode(5);// 翻转链表ListNode reversedHead = reverseList(head);// 打印翻转后的链表ListNode current = reversedHead;while (current != null) {System.out.print(current.val + " ");current = current.next;}}
}

2. 递归方式实现链表翻转

  • 递归地处理链表的剩余部分,直到到达最后一个节点。
  • 在回溯过程中,翻转当前节点和其前一个节点的连接。
  • 最终返回新的头节点。
class ListNode {int val;ListNode next;ListNode(int x) { val = x; }
}public class ReverseLinkedList {public static ListNode reverseList(ListNode head) {// 基本情况:如果链表为空或只有一个节点,直接返回头节点if (head == null || head.next == null) {return head;}// 递归翻转剩余的链表ListNode p = reverseList(head.next);// 当前节点的下一个节点指向当前节点head.next.next = head;head.next = null;return p; // 返回新的头节点}public static void main(String[] args) {// 构建测试链表:1 -> 2 -> 3 -> 4 -> 5ListNode head = new ListNode(1);head.next = new ListNode(2);head.next.next = new ListNode(3);head.next.next.next = new ListNode(4);head.next.next.next.next = new ListNode(5);// 翻转链表ListNode reversedHead = reverseList(head);// 打印翻转后的链表ListNode current = reversedHead;while (current != null) {System.out.print(current.val + " ");current = current.next;}}
}

这两种方法在不同的场景下都有其优点和适用性。迭代方法通常更容易理解和实现,而递归方法则更具递归思想的优美性。

http://www.dinnco.com/news/31902.html

相关文章:

  • 自己做产品品牌网站短视频平台推广方案
  • 网站建设需要的一些技术怎么在线上推广自己的产品
  • 网站域名禁止续费网络营销方法和手段
  • 做企业网站需要买什么站长工具使用方法
  • 纯静态网站 维护百度的客服电话是多少
  • app开发哪家公司比较专业优化设计答案六年级上册
  • 有哪些公司做网站搜索引擎优化专员
  • 云南网站的设计公司简介上海最大的seo公司
  • 那个网站的是做vb题目的百度小说风云排行榜
  • 武汉公司建站模板seo优化sem推广
  • 行业门户网站程序友情链接网站
  • 如何让域名指向网站南京网页搜索排名提升
  • java web音乐网站开发首页优化公司
  • 东莞网站优化怎样沈阳cms模板建站
  • 温州网站建设温州网站制作网站推广具体内容
  • 贵阳建设企业网站百度在线下载
  • 做网站公司的介绍软文标题大全
  • 标志设计欣赏网站推广的十种方式
  • 线上外贸平台有哪些广州专做优化的科技公司
  • 大学html网站建设作业谷歌aso优化
  • url短网址在线生成福州seo推广优化
  • 玩具网站建设阿里云模板建站
  • 新手做的网站推广游戏赚钱的平台
  • 惠阳网站制作公司天津网站优化公司
  • 品牌网络推广公司排名公司优化是什么意思
  • 广东网站开发软件长沙网络营销学校
  • 做网站能用ai做吗推广渠道怎么写
  • 想采集某类型网站怎么做线上营销课程
  • 跨境电商网站开发技术北京优化网站公司
  • h5个人网站代码技能培训学校