leetcode Add Two Numbers

   You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.

   下面是我的解法

//		一下部分为自己最初的解法(刚开始题目理解的有问题,只能将错就错,改成这样了)
//		LinkedList<Integer>  tempL1 = new LinkedList<Integer>();
//		while(l1!= null){
//			tempL1.add(l1.val);
//			l1 = l1.next;
//		}
//		LinkedList<Integer>  tempL2 = new LinkedList<Integer>();
//		while(l2!= null){
//			tempL2.add(l2.val);
//			l2 = l2.next;
//		}
//		
//		int len = tempL2.size()-tempL1.size();
//		if(len >0){
//			
//			for(int i=0; i<len; i++){
//				tempL1.add(0);
//			}
//		}else{
//			for(int i=0; i<len*-1; i++){
//				tempL2.add(0);
//			}
//		}
//		
//		LinkedList<Integer> tempResult = new LinkedList<Integer>();
//		int sum = 0;
//		for(int i=0; i<tempL2.size(); i++){
//			 int temp = sum +tempL1.get(i) + tempL2.get(i);
//			 tempResult.add(temp%10);
//			 sum = temp/10;
//		}
//		if(sum!=0){
//			tempResult.add(sum);
//		}
//		
//		LinkedList<ListNode> result = new LinkedList<ListNode>();
//		for(int item : tempResult){
//			result.add(new ListNode(item));
//		}
//		
//		for(int i=0; i<result.size() -1;i++){
//			result.get(i).next = result.get(i+1);
//		}
//		
//		if(result.size() > 0){
//			return result.get(0);
//		}else{
//			return null;
//		}
		ListNode temp = new ListNode(0);
		ListNode result = temp;
		if(l1 == null) return l2;
		if(l2 == null) return l1;
		int sum = 0;
		int i = 0;
		while((l1 != null) || (l2 != null)){
			if(l1 != null){
				sum +=l1.val;
				l1 = l1.next;
			}
			
			if(l2 != null){
				sum += l2.val;
				l2 = l2.next;
			}
			
			ListNode ln = new ListNode(sum%10);
			sum = sum/10;
			result.next = ln;
			result = result.next;
		}
		
		if(sum != 0){
			ListNode ln  = new ListNode(sum);
			result.next = ln;
		}
		
		return  temp.next;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值