剑指offer 合并两个数组 java实现

来源:互联网 发布:值乎 分答 编辑:程序博客网 时间:2024/06/01 09:29

合并两个数组时(包括字符串),如果从前往后复制每个数字 需要重复移动数字,应当考虑由后向前遍历复制,可以减少移动次数。


public class MergeTwoArray {public int[] merge(int[] a,int[] b){if(a==null||b==null){System.out.println("空数组异常");System.exit(0);}if(b.length==0){return a;}int count = 0;//计算有空闲空间数组内 有效元素的长度while(a[count]!=0||a[count+1] !=0){count++;}int j = count-1;//指示标识 a数组int i = b.length-1;//指示标识int k = count+b.length-1;//a数组 插入位置while(i >=0&&j>=0&&k>j){if(a[j]==b[i]){a[k--] = b[i--];a[k--] = a[j--];}else if(a[j]>b[i]){a[k--] = a[j--];    }else{a[k--] = b[i--];}}return a;}public static void main(String[] args) {// TODO Auto-generated method stubMergeTwoArray merge = new MergeTwoArray();int[] array1 = new int[]{0,1,3,5,7,9,0,0,0,0,0,0,0};int[] array2 = new int[]{2,4,6,8,10};int[] array = merge.merge(array1, array2);for(int i = 0; i < array.length;i++){System.out.println(array[i]);}}}


0 0
原创粉丝点击