剑指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]);}*/
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]);}*/
相关文章推荐
- 剑指Offer----面试题四之相关题目
- 剑指offer编程题Java实现——面试题12相关题大数的加法、减法、乘法问题的实现
- 剑指offer面试题java实现之题4之相关题目:两个排序数组合并
- 剑指offer面试题4:替换空格 相关题目 排序的数组A2中所有数字插入到A1并保持排序
- 剑指offer--面试题10--相关
- 剑指offer--面试题21--相关
- 剑指offer--面试题15--相关
- 剑指Offer_面试题30_最小的k个数
- 剑指offer--面试题12:打印1到最大的n位数--Java实现
- 剑指offer——面试题3:二维数组中的查找
- 剑指offer面试题之二维数组查找——二分查找的本质
- 【剑指Offer面试题】九度OJ1384:二维数组中的查找
- 剑指offer面试题46:求1+2+...+n
- 剑指offer_面试题12_打印1到最大的n位数(大数问题)
- 剑指offer 面试题3:二维数组中的查找
- 剑指Offer面试题35(java版):第一个只出现一次的字符
- 剑指offer面试题:替换空格(将字符串每个空格替换为%20)
- 剑指Offer面试题18树的子结构(递归),面试题19二叉树的镜像(递归和非递归用栈)
- 剑指offer——面试题:把字符串转换为整数
- 【剑指offer Java】面试题2:实现Singleton模式