题解 | # 给单链表加一

给单链表加一

http://www.nowcoder.com/practice/a2f1105d2ac5466e9ba8fd61310ba6d1

我觉得可以使用递归的方式来解决该题: 当链表数量大于1时:

  1. 添加一个值为0的新头节点,新头节点的next为head
  2. 递归计算next节点作为链表起点+1的值
  3. 计算完成后,如果next节点的值等于10,当前节点+1
  4. 判断头结点是否等于0。如果等于0说明没有超出原来的节点超度,返回head;如果大于0说明超出了原有的节点长度返回新头节点。

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

import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 *   public ListNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param head ListNode类 
     * @return ListNode类
     */
    public ListNode plusOne (ListNode head) {
        // write code here
        ListNode newHead = new ListNode(0);
        newHead.next = head;
        plusOne2(newHead);
        return newHead.val==0?head:newHead;
    }
    
    public ListNode plusOne2 (ListNode curr) {
        // write code here
        if(curr.next == null){
            curr.val+=1;
            return curr;
        }
        ListNode next = plusOne2(curr.next);
        if(next.val==10) {
            next.val = 0;
            curr.val += 1;
        }
        return curr;
    }
}
全部评论
递归不累计空间复杂度,算时间复杂度
点赞 回复 分享
发布于 2022-04-18 22:18
空间复杂度为O(1)?函数递归调用不用栈的?
点赞 回复 分享
发布于 2022-04-18 21:58

相关推荐

不愿透露姓名的神秘牛友
12-18 11:21
优秀的大熊猫在okr...:叫你朋友入职保安,你再去送外卖,一个从商,一个从政,你们两联手无敌了,睁开你的眼睛看看,现在是谁说了算(校长在背后瑟瑟发抖)
选实习,你更看重哪方面?
点赞 评论 收藏
分享
10-31 21:01
武汉大学 Java
lulululula...:仅仅按我个人的经历来看,大厂其实很少特别关注微服务,一般对微服务架构,限流熔断降级的概念了解就行,简历不写也不容易被问到。现在这个势头不如站点agent应用,比如做做mcp,rag,r对话agent,记忆管理之类的,说不定可以蹭上一波热度,进公司虽然可能还是干agent的杂活,但是可以学一学组内的业务和技术了
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务