首页 > 试题广场 >

给单链表加一

[编程题]给单链表加一
  • 热度指数:2568 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个用单链表表示的整数,然后把这个整数加一。

数据范围:链表长度满足 ,链表上每个节点的值满足 ,可以保证链表在非 0 的情况下没有前导零

例如输入{1,2,3}时,对应的输出为{1,2,4},转换过程如下图所示:

示例1

输入

{1,2,3}

输出

{1,2,4}
示例2

输入

{1,2,0}

输出

{1,2,1}
示例3

输入

{9}

输出

{1,0}

说明:本题目包含复杂数据结构ListNode,点此查看相关信息
package main
import _"fmt"
import . "nc_tools"
/*
 * type ListNode struct{
 *   Val int
 *   Next *ListNode
 * }
 */

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param head ListNode类 
 * @return ListNode类
*/
func plusOne( head *ListNode ) *ListNode {
    arr:=[]*ListNode{}
    for p:=head;p!=nil;p=p.Next{
        arr=append(arr,p)
    }
    carry:=1
    for i:=len(arr)-1;i>=0;i--{
        carry+=arr[i].Val
        if carry!=10{
            arr[i].Val=carry
            return head
        }else{
            arr[i].Val=0
            carry=1
        }
    }
    return &ListNode{1,head}
}

发表于 2023-03-09 00:10:08 回复(0)