Algorithm:
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新
package com.util.main;
import com.tuniu.ngsp.nws.support.util.JsonExceptionUtil;
public class AddTwoNumbers {
public static class ListNode{
private int value;
private ListNode next;
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
public ListNode getNext() {
return next;
}
public void setNext(ListNode next) {
this.next = next;
}
public ListNode(int value) {
this.value = value;
}
public ListNode(int value,ListNode ln){
this.value=value;
this.next=ln;
}
}
public static ListNode addTwoNumbers(ListNode l1,ListNode l2){
ListNode head = new ListNode(0);
//cur可能认为是一个指针,总是指向末节点的next
ListNode p = l1,q = l2,cur = head;
int carry = 0;
while(p!=null || q!=null){
int x = (p!=null?p.getValue():0);
int y = (q!=null?q.getValue():0);
int sum = carry + x + y;
//进位数
carry = sum/10;
//当前位的和
cur.next = new ListNode(sum%10);
cur = cur.next;
if(p!=null){
p = p.next;
}
if(q!=null){
q = q.next;
}
if(carry>0){
cur.next = new ListNode(carry);
}
}
return head.next;
}
public static void main (String[] args){
ListNode l1a = new ListNode(3);
ListNode l1b = new ListNode(4,l1a);
ListNode l1 = new ListNode(2,l1b);
ListNode l2a = new ListNode(4);
ListNode l2b = new ListNode(6,l2a);
ListNode l2 = new ListNode(5,l2b);
ListNode sum = addTwoNumbers(l1,l2);
System.out.println(JsonExceptionUtil.toString(sum));
}
}
长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(1)额外空间的条件下完成
示例:
给定 nums = [1,1,2], 函数应该返回新的长度2,并且原数组nums的前两个元素被修改为1,2
Review
未能完成
Tips
java8 map新特性
map.getOrDefault 当Map集合中有这个key时,就使用这个key值,如果没有就使用默认值defaultValue,注意getOrDefault的默认值的生效条件并不是get的值为null,而是containsKey的结果为false,所以如果key获取的值为null,得到的会是null
Share
如何看英文技术文档
https://www.jianshu.com/p/af7d39cac6b8