有关数组的两个小题

2017-08-09  本文已影响7人  安安静静写代码

1.有两个有序整数数组,
例如{1,3,5,7,9}和{2,4,6,7,8},
设计一个函数使两个数组合并,并求出其共同元素,且剔除掉两个数组里重复的元素。{1,2,3,4,5,6,7,8,9}

package demo1;
import java.util.Arrays;
public class Test1 {
    public static void main(String[] args) {
        int[] a = {1,3,5,7,9};
        int[] b = {2,4,6,7,8};
        int[] c= new int[a.length+b.length];//如果a和b没有相同元素那么c的最大长度为a和b的长度
        
        int i,j;
        for(i= 0;i<b.length;i++)//将b数组的内容放到b数组中
        {
            c[i] = b[i];
        }
        int t=i;                //用t记录c数组的下标
        for(i = 0;i<a.length;i++)   
        {
            boolean flag = true;
            for( j = 0;j<b.length;j++)
            {
                if(a[i]==b[j])
                {
                    System.out.println(a[i]);  //打印相同元素
                    flag = false;
                    break;
                }
                
            }                  
            if(flag)                         //判断a数组和b数组不重复元素放到c中
            {
                c[t++] = a[i];
            }
        } 
        Arrays.sort(c);
        for (i=c.length-t;i<c.length;i++) {                  //输出c,输出到t为止
            System.out.print(c[i]+" ");
        }   
    }
}

2.给定一个含有n个元素的整型数组a,输出元素出现的次数.
如:{1,1,1,2,4,3,3}
1:3
2:1
4:1
3:2

package demo1;

import java.util.Arrays;

public class Test3 {

    public static void main(String[] args) {
        
        int[] a = new int[]{1,1,1,2,4,3,3};     
        Arrays.sort(a);                      //先将a数组进行排序
        int b[][] = new int[a.length][2];    //开辟一个a.length行两列的二维数组     
        int t = 0;                           //用t记录b数组下标
        b[t++][0] = a[0];                    //先a数组第一个值赋给b数组
        int i;
        int j;
        for( i = 1;i<a.length;i++)           //将不重复的数据压到b数组里
        {
            if(a[i]>a[i-1])
            {
                    b[t++][0] = a[i];           
            }
        }           
        for( i = 0;i<t;i++)                  //记录数据在a数组中出现次数
        {
            for( j = 0;j<a.length;j++)
            {
                if(b[i][0]==a[j])
                {
                    b[i][1]++;
                }
            }
        }
        for(i = 0;i<t;i++)                 //打印b数组中的数和出现的次数
        {
            System.out.println(b[i][0]+":"+b[i][1]);
        }
        
    }

}
上一篇 下一篇

猜你喜欢

热点阅读