lintcode 链表求和】的更多相关文章

题目要求 你有两个用链表代表的整数,其中每个节点包含一个数字.数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头.写出一个函数将两个整数相加,用链表形式返回和. 样例 给出两个链表 3->1->5->null 和 5->9->2->null,返回 8->0->8->null 分析 因为是反序,所以每个位置的和直接逐一相加就可以,难点是进位,需要用到一个flag来控制进位,这里要特别记住最后还要判断一次最高位的进位. /** * Defin…
题意:两个非空链表求和,这两个链表所表示的数字没有前导零,要求不能修改原链表,如反转链表. 分析:用stack分别存两个链表的数字,然后从低位开始边求和边重新构造链表. Input: (7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4) Output: 7 -> 8 -> 0 -> 7 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListN…
问题分析: 我们通过遍历两个链表拿到每个位的值,两个值加上前一位进位值(0或者1)模10就是该位的值,除以10就是向高位的进位值(0或者1). 由于两个链表可以不一样长,所以要及时判断,一旦为null,该位的值就要变成0. 有一种情况比较特殊,比如:1->1->1->null, 9->8->8->null,最终结果为0->0->0->1->null,需要保留最高位. 而1->1->1->null, 9->8->7-&…
题目: 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. Input: (2 -> 4 -> 3) + (5 -> 6 -&…
反向存储,从左往右加 [抄题]: 你有两个用链表代表的整数,其中每个节点包含一个数字.数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头.写出一个函数将两个整数相加,用链表形式返回和.给出两个链表 3->1->5->null 和 5->9->2->null,返回 8->0->8->null [暴力解法]: 时间分析: 空间分析: [思维问题]: 直接从左往右加就行,没看出来. 链表结构改变时要添加dummy,返回的是dummy.next…
[转载请注明]http://www.cnblogs.com/igoslly/p/8672467.html 来看一下题目: You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers a…
用插入排序对链表排序 解题思路: 最省时间的方法是使用优先级队列,但是无法通过,那就直接插入排序好了. public ListNode insertionSortList(ListNode head) { ListNode root = new ListNode(Integer.MIN_VALUE); while (head != null) { ListNode temp = root; while (temp.next != null && head.val >= temp.ne…
题目: 你有两个用链表代表的整数,其中每个节点包含一个数字.数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头.写出一个函数将两个整数相加,用链表形式返回和. 样例: 给出两个链表 3->1->5->null 和 5->9->2->null,返回 8->0->8->null 答案: 从头到尾按链表顺序遍历相加就行啦,如果加到最后,进位不为0,还需要另外添加一个节点. 代码: /** * Definition for singly-link…
题目: 链表插入排序 用插入排序对链表排序 样例 Given 1->3->2->0->null, return 0->1->2->3->null 解题: 感觉很简单,但是没有写出来,链表的操作还不行的,九章程序. Java程序: /** * Definition for ListNode. * public class ListNode { * int val; * ListNode next; * ListNode(int val) { * this.va…
假定用一个链表表示两个数,其中每个节点仅包含一个数字.假设这两个数的数字顺序排列,请设计一种方法将两个数相加,并将其结果表现为链表的形式. 样例 样例 1: 输入t:6->1->7 2->9->5 输出 :9->1->2 样例 2: 输入:1->2->3 4->5->6 输出 :6->7->9 /** * Definition for ListNode * public class ListNode { * int val; * Li…