2. Add Two Numbers
这其实比昨天那道相加的问题还简单一点。。。原理一样。
public class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode output= new ListNode(0);
ListNode curr = output;
ListNode curr2 = l2;
ListNode curr1 = l1;
while (curr1 != null || curr2 != null) {
if (curr1 != null && curr2 != null) {
curr.next = new ListNode(curr1.val + curr2.val);
curr2 = curr2.next;
curr1 = curr1.next;
}
else if (curr1 != null && curr2 == null){
curr.next = new ListNode(curr1.val);
curr1 = curr1.next;
}
else {
curr.next = new ListNode(curr2.val);
curr2 = curr2.next;
}
curr = curr.next;
}
ListNode currN = output.next;
while (currN != null) {
if (currN.next == null && currN.val > 9) {
currN.val = currN.val - 10;
currN.next = new ListNode(1);
}
else {
if (currN.val > 9) {
currN.next.val++;
currN.val = currN.val - 10;
}
}
currN = currN.next;
}
return output.next;
}
}
328. Odd Even Linked List
这题就是吧建立两个链表再顺链表两个两个移动,将奇数偶数分别加到这两个链表后面。
public class Solution {
public ListNode oddEvenList(ListNode head) {
// check if it is null
if (head == null) {
return null;
}
ListNode oddNode = head;
ListNode evenNode = head.next;
// referance for moving on
ListNode currO = oddNode;
ListNode currE = evenNode;
while (currO.next != null && currE.next != null) {
currO.next = currO.next.next;
currE.next = currE.next.next;
currO = currO.next;
currE = currE.next;
}
// connect two chain
currO.next = evenNode;
return oddNode;
}
}