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

LeetCode 2816.翻倍以链表形式表示的数字

题目

给你一个 非空 链表的头节点 head ,表示一个不含前导零的非负数整数。

将链表 翻倍 后,返回头节点 head 

思路

思路一:反转链表,两个相同的链表求和

思路二:如果不考虑进位,就是每个节点的值乘以 2。什么时候会受到进位的影响呢?只有下一个节点大于 4 的时候,才会因为进位多加一。特别地,如果链表头的值大于 4,那么需要在前面插入一个新的节点。

代码

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {  // 思路二
    public ListNode doubleIt(ListNode head) {
        if (head.val > 4) {
            head = new ListNode(0, head);
        }
        for (ListNode cur = head; cur != null; cur = cur.next) {
            cur.val = cur.val * 2 % 10;
            if (cur.next != null && cur.next.val > 4)
                cur.val++;
        }
        return head;
    }
}

性能

时间复杂度 o(n)

空间复杂度 o(1)


http://www.kler.cn/a/400514.html

相关文章:

  • 消息队列原理面试题及参考答案
  • 手搓神经网络(MLP)解决MNIST手写数字识别问题 | 数学推导+代码实现 | 仅用numpy,tensor和torch基本计算 | 含正反向传播数学推导
  • 开源控件:Qt/C++自定义颜色组合框控件ColorComboBox
  • 深度学习:循环神经网络的计算复杂度,顺序操作和最大路径长度
  • Spring Boot汽车资讯:科技与速度的新纪元
  • Leetcode 逆波兰表达式求值
  • Redis与数据库关联小记
  • 连续 Hopfield 神经网络深入探讨
  • Git学习教程(更新中)
  • sqlite3相关经验记录
  • 微信小程序上传pdf和显示
  • 使用python编写工具:快速生成chrome插件相关文件结构
  • iOS逆向入门:使用theos注入第三方依赖库
  • KUKU FM 音频Linux平台免费下载工具
  • 防火墙----iptables
  • 鸿蒙next版开发:拍照实现方案(ArkTS)
  • llm 从0开始学习大语言模型, transformer架构学习
  • Rust “xxx“.to_string()和Rust String::from(“xxx“)区别(将字符串字面量(str类型)转换为String类型)
  • 数学建模——模型假设环节介绍
  • 基于单片机的手持金属探测仪设计