您的位置:首页 > 职场人生

剑指offer 面试题4的相关题

2016-08-18 00:00 295 查看
摘要: 有两个排序的数组A1,A2,内存在A1的末尾有足够的空余容纳A2,请实现一个函数,把A2中的所有数字插入到A1中并且所有的数字是排序的。

package jianzhioffer;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;

public class Test4Expand1 {
public static void main(String[] args)
{
List<Integer> list1=new ArrayList<Integer>();
list1.add(12);list1.add(15);list1.add(15);list1.add(19);
List<Integer> list2=new ArrayList<Integer>();
list2.add(12);list2.add(14);list2.add(16);list2.add(18);list2.add(19);
for(int j=0;j<list2.size();j++)
{
list1.add(0);
}
unit(list1,list2);
Iterator<Integer> its = list1.iterator();//输出结合后的list1
while(its.hasNext())
{
System.out.print(its.next()+"--");
}
}
public static void unit(List<Integer> list1,List<Integer> list2)
{
if(list1.size()==0||list2.size()==0)
{
System.out.println("输入数组为空");
}

int p1=list1.size()-list2.size()-1;
int p2=list2.size()-1;
int p3=list1.size()-1;

while(p1>=0&&p2>=0)
{

if(list1.get(p1)==list2.get(p2))
{
list1.set(p3, list1.get(p1));--p3;
list1.set(p3, list2.get(p2));--p3;
--p1;--p2;
}
else if(list1.get(p1)>list2.get(p2))
{
list1.set(p3, list1.get(p1));--p3;
--p1;
}
else
{
list1.set(p3, list2.get(p2));--p3;
--p2;
}
}//while
}
}

<!--键盘输入可以用下面代码,同样有点繁琐-->

/*Scanner in=new Scanner(System.in);
String s1=in.nextLine();
String s2=in.nextLine();
String[] temp1=(s1.split(" "));
String[] temp2=(s2.split(" "));
int[] a1=new int[temp1.length];
int[] a2=new int[temp2.length];
for(int i=0;i<temp1.length;i++)
{
a1[i]=Integer.parseInt(temp1[i]);
}
for(int i=0;i<temp2.length;i++)
{
a2[i]=Integer.parseInt(temp2[i]);
}
List<Integer> list1=new ArrayList<Integer>();
List<Integer> list2=new ArrayList<Integer>();
for(int i=0;i<a1.length;i++){list1.add(a1[i]);}//li赋值
for(int i=0;i<a2.length;i++){list2.add(a2[i]);}*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: