Merge Two Sorted Lists
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
Example:
Input: 1->2->4, 1->3->4 Output: 1->1->2->3->4->4
方法一
该方法新建节点连接到新链表上开销较大
该方法新建节点连接到新链表上开销较大
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode res = new ListNode(-1);
ListNode p=res;
while(l1!=null&&l2!=null)
{
if(l1.val<l2.val)
{
p.next=new ListNode(l1.val);
l1=l1.next;
}
else
{
p.next=new ListNode(l2.val);
l2=l2.next;
}
p=p.next;
}
while(l1!=null)
{
p.next=new ListNode(l1.val);
l1=l1.next;
p=p.next;
}
while(l2!=null)
{
p.next=new ListNode(l2.val);
l2=l2.next;
p=p.next;
}
return res.next;
}
方法2在方法一的基础上利用原有节点将原有节点接到新链表上
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if(l1==null&&l2==null)
{
return null;
}
if(l1!=null&&l2==null)
{
return l1;
}
if(l1==null&&l2!=null)
{
return l2;
}
ListNode node = new ListNode(-1);
ListNode p=node;
while(l1!=null&&l2!=null)
{
if(l1.val<l2.val)
{
p.next=l1;
l1=l1.next;
}
else
{
p.next=l2;
l2=l2.next;
}
p=p.next;
}
if(l1!=null)
{
p.next=l1;
}
if(l2!=null)
{
p.next=l2;
}
return node.next;
}
方法3递归
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if(l1==null)
{
return l2;
}
if(l2==null)
{
return l1;
}
ListNode head;
if(l1.val<l2.val)
{
head=l1;
head.next=mergeTwoLists(l1.next,l2);
}
else
{
head=l2;
head.next=mergeTwoLists(l1,l2.next);
}
return head;
}
26. Remove Duplicates from Sorted Array
Given a sorted array nums, remove the duplicates in-place such that each element appear only once and return the new length.
Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.
Example 1:
Given nums = [1,1,2], Your function should return length =2, with the first two elements ofnumsbeing1and2respectively. It doesn't matter what you leave beyond the returned length.
Example 2:
Given nums = [0,0,1,1,1,2,2,3,3,4], Your function should return length =5, with the first five elements ofnumsbeing modified to0,1,2,3, and4respectively. It doesn't matter what values are set beyond the returned length.
给一个有序数组[1,2,3,4,4,5]去重并返回去重后的长度
int i=0;
for(int n:nums)
{
if(n>nums[i])
{
nums[++i]=n;
}
}
return i+1;
612

被折叠的 条评论
为什么被折叠?



