编程导航算法通关村 |两两交换链表中的节点、单链表加1

文章介绍了两种链表操作算法,一是实现两两交换链表中的节点,二是实现单链表数值加1。通过栈辅助,分别详细阐述了这两个操作的步骤和逻辑,并提及了一个编程学习资源,提供学习路线、原创教程和与大厂嘉宾交流的机会。
摘要由CSDN通过智能技术生成

两两交换链表中的节点

public ListNode swapPairs(ListNode head) {
       ListNode dummyHead = new ListNode(0);
       dummyHead.next = head;
       ListNode temp = dummyHead;
       while (temp.next != null && temp.next.next != null) {
           ListNode node1 = temp.next;
           ListNode node2 = temp.next.next;
           temp.next = node2;
           node1.next = node2.next;
           node2.next = node1;
           temp = node1;
       }
       return dummyHead.next;
   }

单链表加1

public ListNode plusOne(ListNode head) {
      Stack<Integer> st = new Stack();
      while (head != null) {
          st.push(head.val);
          head = head.next;
      }
      int carry = 0;
      ListNode dummy = new ListNode(0);
      int adder = 1;
      while (!st.empty() || adder != 0 || carry > 0) {
          int digit = st.empty() ? 0 : st.pop();
          int sum = digit + adder + carry;
          carry = sum >= 10 ? 1 : 0;
          sum = sum >= 10 ? sum - 10 : sum;
          ListNode cur = new ListNode(sum);
          cur.next = dummy.next;
          dummy.next = cur;
          adder = 0;
      }
      return dummy.next;
  }

推荐我自己加入的一个编程学习圈子,里面有编程学习路线和原创的项目教程,以及可 1 对 1 和大厂嘉宾交流答疑,也希望能对大家有帮助,扫 ⬇️ 二维码即可加入

在这里插入图片描述在这里插入图片描述在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值