LeetCode Golang 单向链表相加 反向实现
LeetCode 两数之和, 反向实现
1 -> 2 -> 3 -> 4
+ 3 -> 4
----------------------------
1 -> 2 -> 6 -> 8
func addTwoNumbersReverse(l1 *ListNode, l2 *ListNode) *ListNode {
if l1 == nil || l2 == nil {
return nil
}
l := new(ListNode)
l.Val = 0
tmp := l
flag := 0
l1Arr := []int{}
l2Arr := []int{}
lRst := []int{}
for l1 != nil {
l1Arr = append(l1Arr, l1.Val)
l1 = l1.Next
}
for l2 != nil {
l2Arr = append(l2Arr, l2.Val)
l2 = l2.Next
}
i := 0
for {
if i > len(l1Arr)-1 || i > len(l2Arr)-1 {
break
}
num := l1Arr[i]+l2Arr[i]+flag
flag = 0
if num >= 10 {
flag = 1
num = num % 10
}
lRst = append(lRst,num)
i++
}
if i < len(l1Arr) {
for ;i<len(l1Arr);i++{
if flag == 1 {
lRst = append(lRst,l1Arr[i]+1)
flag = 0
} else {
lRst = append(lRst,l1Arr[i])
}
}
}
if i < len(l2Arr) {
for ;i<len(l2Arr);i++{
if flag == 1 {
lRst = append(lRst,l2Arr[i]+1)
flag = 0
} else {
lRst = append(lRst,l2Arr[i])
}
}
}
for i := len(lRst)-1; i >=0; i-- {
tmp.Val = lRst[i]
if i == 0 {
break
}
tmp.Next = new(ListNode)
tmp = tmp.Next
}
return l
}
思路: 为了简化运算把所有链表中的值取出来到切片里进行相加, 然后再从切片写入到新的链表里
另一个思路: 借助昨天的代码, 再运算前对链表进行反转
LeetCode Golang 单向链表相加 反向实现的更多相关文章
- 待字闺中之快排单向链表;leetcode之Sort List
题目来源.待字闺中.原创@陈利人 .欢迎大家继续关注微信公众账号"待字闺中" 分析:思路和数据的高速排序一样,都须要找到一个pivot元素.或者节点. 然后将数组或者单向链表划分为 ...
- [LeetCode] 206. Reverse Linked List 反向链表
Reverse a singly linked list. Hint: A linked list can be reversed either iteratively or recursively. ...
- 【LeetCode每天一题】Add Two Numbers(两链表相加)
You are given two non-empty linked lists representing two non-negative integers. The digits are stor ...
- 单向链表 golang
package main import "fmt" type Object interface {} //节点 type Node struct { data Object nex ...
- 【LeetCode题解】链表Linked List
1. 链表 数组是一种顺序表,index与value之间是一种顺序映射,以\(O(1)\)的复杂度访问数据元素.但是,若要在表的中间部分插入(或删除)某一个元素时,需要将后续的数据元素进行移动,复杂度 ...
- [LeetCode] Add Strings 字符串相加
Given two non-negative numbers num1 and num2 represented as string, return the sum of num1 and num2. ...
- Python链表的实现与使用(单向链表与双向链表)
参考[易百教程]用Python实现链表及其功能 """ python链表的基本操作:节点.链表.增删改查 """ import sys cl ...
- 如何判断一个单向链表是否为回文链表(Palindrome Linked List)
题目:给定一个单向链表,判断它是不是回文链表(即从前往后读和从后往前读是一样的).原题见下图,还要求了O(n)的时间复杂度O(1)的空间复杂度. 我的思考: 1,一看到这个题目,大脑马上想到的解决方案 ...
- LeetCode 445——两数相加 II
1. 题目 2. 解答 2.1 方法一 在 LeetCode 206--反转链表 和 LeetCode 2--两数相加 的基础上,先对两个链表进行反转,然后求出和后再进行反转即可. /** * Def ...
随机推荐
- VS Code中编写html(4) 标签的宽高颜色背景设置
1 <!+Tab键--> <!--有两个div标签时,分别设置style,有两种方法--> <div id="div1">第一个div标签:& ...
- JS 封装一个判断闰年平年的方法 aa(nian)
nn(2017) function nn (nian){ if(nian%4 == 0 && nian%100 !== 0 || nian%400 ==0 ) { alert(&quo ...
- HDU 1021 Fibonacci Again( 同余水 )
链接:传送门 题意:现在给出 Fibonacci numbers: F(0) = 7, F(1) = 11, F(n) = F(n-1) + F(n-2) (n>=2).问第 n 项能不能整除 ...
- JavaScript模块化编程之AMD
简单的说一下AMD是"Asynchronous Module Definition"的缩写,意思就是"异步模块定义".它采用异步方式加载模块,模块的加载不影响它 ...
- ndk,cygwin编译 .so动态库
注意: ndk .cygwin 安装路径尽量要和sdk放到一个磁盘里,设置环境变量. 例如D: 根目录 变量名:ndk 值:/cygdrive/d/android-ndk-r8e 打开cygwi ...
- STM32 ADC多通道转换DMA模式与非DMA模式两种方法(HAL库)
一.非DMA模式(转) 说明:这个是自己刚做的时候百度出来的,不是我自己做出来的,因为感觉有用就保存下来做学习用,原文链接:https://blog.csdn.net/qq_24815615/arti ...
- 环境搭建Selenium2+Eclipse+Java+TestNG_(一)
第一步 安装JDK 第二步 下载Eclipse 第三步 在Eclipse中安装TestNG 第四步 下载Selenium IDE.SeleniumRC.IEDriverServer 第五步 下载Fi ...
- 关于springboot整合的详细过程
Spring-boot http://tengj.top/2017/04/24/springboot0/
- 打造一个全命令行的Android构建系统
IDE都是给小白程序员的,大牛级别的程序员一定是命令行控,终端控,你看大牛都是使用vim,emacs 就一切搞定” 这话说的虽然有些绝对,但是也不无道理,做开发这行要想效率高,自动化还真是缺少不了命令 ...
- [MFC]透明图展示
(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu 转载请标明来源) 一般我们可见的图形RGB三元色.对Alpha通道的话.它不一定会显示到窗口中来. 在Wi ...