合并两个有序链表:
将两个有序的链表合并为一个新链表,要求新的链表是通过拼接两个链表的节点来生成的,且合并后新链表依然有序。
输入{1},{2} 输出 {1,2}
/**
*
* @param l1 ListNode类
* @param l2 ListNode类
* @return ListNode类
*/
public ListNode mergeTwoLists (ListNode l1, ListNode l2) {
ListNode curr = new ListNode(0);
// 指针记录开始。
ListNode result = curr;
while(null != l1 && null != l2){
if(l1.val > l2.val){
curr.next = l2;
l2 = l2.next;
}else{
curr.next = l1;
l1 = l1.next;
}
curr = curr.next;
}
if(null != l1){
curr.next = l1;
}
if(null != l2){
curr.next = l2;
}
return result.next;
}
合并两个有序数组:
给出两个有序的整数数组A和B,请将数组B合并到数组A中,变成一个有序的数组注意:可以假设A数组有足够的空间存放B数组的元素,A和B中初始的元素数目分别为M和N
public void merge(int A[], int m, int B[], int n) {
// A数组的容量
int right = A.length-1;
int curA = m-1;
int curB = n-1;
while(curA>=0 && curB >=0){
if(A[curA]>B[curB]){
// 大的在前面
A[right--] = A[curA--];
}else{
A[right--] = B[curB--];
}
}
// A、B数据长度不一致场景
while(curA >= 0){
A[right--] = A[curA--];
}
while(curB >= 0){
A[right--] = B[curB--];
}
}