您的位置:首页 > 其它

leetcode Add Two Numbers

2015-06-07 11:30 309 查看
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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: