public class MergeArray {
public static void main(String []args){
int[] array1={1,2,3,0,0,0};
int[] array2={0,2,5,6};
int [] array3=mergeArray2(array1,array2,3,3);
for(int i=0;i<array3.length;i++){
System.out.print(array3[i]);
}
}
public static int[] mergeArray(int [] array1,int [] array2,int m,int n){
int i=m-1;//array1数组索引最大
int j=n-1;//array2数组索引最大
int k=m+n-1;//返回的数组索引最大
while(i>=0 && j>=0){
if(array1[i]>array2[j]){
array1[k]=array1[i];
k--;
i--;
}else{
array1[k]=array2[j];
k--;
j--;
}
}
while(j>=0){
array1[k]=array2[j];
k--;
j--;
}
return array1;
}
public static int[] mergeArray2(int[] nums1,int [] nums2,int m,int n){
int i=m-1;
int j=n-1;
int k=m+n-1;
while(j>=0){
if(i>=0 && nums1[i]>nums2[j] ){
nums1[k]=nums1[i];
k--;
i--;
}else{
nums1[k]=nums2[j];
k--;
j--;
}
}
return nums1;
}
public static ListNode mergeList(ListNode l1,ListNode l2){
ListNode temp=new ListNode(-1);
ListNode cur=temp;
while(l1!=null && l2!=null){
if(l1.val<l2.val){
cur.nextNode=l1;
l1=l1.nextNode;
}else{
cur.nextNode=l2;
l2=l2.nextNode;
}
cur=cur.nextNode;
}
cur.nextNode=(l1!=null)?l1:l2;
return temp.nextNode;
}
}
class ListNode{
public int val;
public ListNode nextNode;
public ListNode(int val){
this.val=val;
}
}
基础算法---合并数组
最新推荐文章于 2026-03-31 02:21:50 发布
该博客主要展示了Java代码实现数组和链表合并的算法。定义了MergeArray类,包含合并两个数组的mergeArray和mergeArray2方法,以及合并两个链表的mergeList方法,通过不同的逻辑判断将元素有序合并。

2万+

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



