Go语言每日一练——链表篇(九)

传送门

牛客面试笔试必刷101题 ----------------链表相加(二)

题目以及解析

题目

在这里插入图片描述

解题代码及解析

解析

这一道题主要是要对链表相加的过程进行模拟,虽然思路不难但是细节出比较多,这里博主的思路主要是先将两个链表反转过来然后以Head1为基础来模拟相加过程,最后将答案链表再反转回来

代码

package main

import (
	_ "fmt"
	. "nc_tools"
)

/*
 * type ListNode struct{
 *   Val int
 *   Next *ListNode
 * }
 */

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param head1 ListNode类
 * @param head2 ListNode类
 * @return ListNode类
 */

func ReserveList(head *ListNode) *ListNode {
   
	var prev *ListNode = nil
	current := head
	for current != nil {
   
		next := current.Next
		current.Next = prev
		prev = current
		current = next
	}
	return prev
}

func add(val1, val2, plus int) (int, int) {
   
	result := val1 + val2 + plus
	if result > 9 {
   
		plus = 1
	} else {
   
		plus = 0
	}
	result = result % 10
	return result, plus
}

func addInList(head1 *ListNode, head2 *ListNode) *ListNode {
   
	Head1 := ReserveList(head1)
	Head2 := ReserveList(head2)
	result := Head1
	var phead *ListNode
	plus := 0
	for Head1 != nil || Head2 != nil {
   
		if Head1 != nil && Head2 != nil {
   
			Head1.Val, plus = add(Head1.Val, Head2.Val, plus)
			phead=Head1
			Head1 = Head1.Next
			Head2 = Head2.Next
		} else if Head1 != nil {
   
			Head1.Val, plus = add(Head1.Val, 0, plus)
			phead.Next= Head1
			Head1 = Head1.Next
			phead = phead.Next
		} else {
   
			Head2.Val, plus = add(0, Head2.Val, plus)
			phead.Next = Head2
			Head2 = Head2.Next
			phead = phead.Next
		}
	}
	if plus > 0 {
   
		Node := &ListNode{
   Val: 1}
		phead.Next = Node
		phead = phead.Next
	}
	return ReserveList(result)
}

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-16 09:40:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-16 09:40:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-16 09:40:01       82 阅读
  4. Python语言-面向对象

    2024-02-16 09:40:01       91 阅读

热门阅读

  1. 程序员为什么不喜欢关电脑?

    2024-02-16 09:40:01       48 阅读
  2. c# linq 查询

    2024-02-16 09:40:01       41 阅读
  3. Spark中多分区写文件前可以不排序么

    2024-02-16 09:40:01       65 阅读
  4. Vue插槽

    Vue插槽

    2024-02-16 09:40:01      39 阅读
  5. JVM学习

    JVM学习

    2024-02-16 09:40:01      49 阅读
  6. 学习总结16

    2024-02-16 09:40:01       50 阅读
  7. AutoSAR(基础入门篇)9.5-实验:配置通信

    2024-02-16 09:40:01       46 阅读
  8. PMP考试之20240216

    2024-02-16 09:40:01       49 阅读
  9. RISC-V和ARM

    2024-02-16 09:40:01       58 阅读