文档章节

java链表及实现leetcode题

无极之岚
 无极之岚
发布于 2018/12/03 15:48
字数 374
阅读 21
收藏 0
package leetcode;

public class AddTwoNumbers {
	/**
	 * 两个链表相加 
     * input: (2 -> 4 -> 3) +(5->6->4) 
     * output: 7->0->8 
	 * 2+5=7 4+6=10(但要显示0) 进一位 1+3+4 =8
	 *  time:O(n)
	 *  space:O(n)
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//try
		ListNode l1 = new ListNode(2);
		ListNode l12 = new ListNode(4);
		ListNode l13 = new ListNode(3);
		l1.next = l12;
		l12.next = l13;
		
		
		ListNode l2 = new ListNode(5);
		ListNode l22 = new ListNode(6);
		ListNode l23 = new ListNode(4);
		
		l2.next = l22;
		l22.next = l23;
		
		ListNode result = new AddTwoNumbers().addTwoNumbers(l1, l2);
		
		result.printList();
		
	}

	public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
		ListNode dummy = new ListNode(0);
		int sum = 0;
		ListNode cur = dummy;
		ListNode p1= l1,p2=l2;
		//让p1和p2作为临时变量存储链表的各个值进行相加
		//若是 链表的next有值,即next指向下一个元素,则继续做加法
		while(p1!=null || p2!=null) {
			if(p1!=null) {
				sum+=p1.val;
				p1=p1.next;
			}
			if(p2!=null) {
				sum+=p2.val;
				p2=p2.next;
			}
			//10取余数
			cur.next = new ListNode(sum % 10);
			//如果相加大于10,则后位加1
			sum=sum/10;
			//游标下移,并且带上上一位的进位
			cur = cur.next;
		}
		if(sum == 1) {
			cur.next = new ListNode(1);
		}
		//最后返回的是 next是因为 链表的第一个值是0
		return dummy.next;
	}
}
/**
 * 自定义链表类,每个对象都有自己的next对象
 * @author mac
 *
 */
class ListNode {
	int val;
	ListNode next;

	public ListNode(int x) {
		val = x;
	}

	public void printList(){
		ListNode tmp=this;
		//遍历输出 next的val
        while(tmp!=null){
        	System.out.print(tmp.val);
        	if(tmp.next!=null) {
        		System.out.print("->");
        	}
            tmp=tmp.next;
        }
        System.out.println();
    }
}

 

© 著作权归作者所有

共有 人打赏支持
上一篇: docker搞个wordpress
下一篇: django之helloworld
无极之岚
粉丝 3
博文 45
码字总数 21599
作品 0
东莞
程序员
私信 提问
Remove Linked List Elements(leetcode203)

emove all elements from a linked list of integers that have value val. Example: Input: 1->2->6->3->4->5->6, val = 6Output: 1->2->3->4->5 实现: public static ListNode removeEle......

woshixin
2018/11/27
0
0
Android--面试中遇到的问题总结(三)

《Android 开发工程师面试指南 LearningNotes 》,作者是陶程,由梁观全贡献部分。大家可以去知乎关注这两位用心的少年。这份指南包含了大部分Android开发的基础、进阶知识,不仅可以帮助准备...

sealin
2017/02/22
0
0
23. Merge k Sorted Lists - LeetCode

Question 23. Merge k Sorted Lists Solution 题目大意:合并链表数组(每个链表中的元素是有序的),要求合并后的链表也是有序的 思路:遍历链表数组,每次取最小节点 Java实现:...

yysue
2018/08/02
0
0
876. Middle of the Linked List - LeetCode

Question 876. Middle of the Linked List Solution 题目大意:求链表的中间节点 思路:构造两个节点,遍历链接,一个每次走一步,另一个每次走两步,一个遍历完链表,另一个恰好在中间 Java...

yysue
2018/08/02
0
0
203. Remove Linked List Elements - LeetCode

Question 203. Remove Linked List Elements Solution 题目大意:从链表中删除给定的数 思路:遍历链表,如果该节点的值等于给的数就删除该节点,注意首节点 Java实现:...

yysue
2018/07/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

外教比较

确定收费的模式 确定授课的模式 确定教学的方式-用什么样的方式能让人更快更好的学会 确定核心竞争力-比如我们的师资是牛津大学的 英语流利说 收费的模式-报特色课程,比如训练营之类的,其实...

V字仇杀
16分钟前
1
0
上下文无关文法介绍

上下文无关文法 上下文无关文法是用来描述程序语言的一种表达方式,通过简单的符号描述语言的集合。正如我们所知道,一个程序即为一个句子(字符串),语言就是所有句子的集合。上下文无关文...

陶小陶
25分钟前
3
0
eggjs与sequelize简单demo

参考 egg 官方文档 安装 // 依赖npm install --save egg-sequelize mysql2// ts 类型npm install --save @types/sequelize 插件,config/plugin.ts import { EggPlugin } from 'egg';......

Geeyu
今天
1
0
看过上百部片子的这个人教你视频标签算法解析

本文由云+社区发表 随着内容时代的来临,多媒体信息,特别是视频信息的分析和理解需求,如图像分类、图像打标签、视频处理等等,变得越发迫切。目前图像分类已经发展了多年,在一定条件下已经...

腾讯云加社区
今天
4
0
2. 红黑树

定义:红黑树(Red-Black Tree,简称R-B Tree),它一种特殊的二叉查找树(Binary Search Tree)。 要理解红黑树,先要了解什么是二叉查找树。在上一章中,我们学习了什么是二叉树,以及二叉树...

火拳-艾斯
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部