精华内容
下载资源
问答
  • 题目是给定一个一维整型数组,要求统计这个数组不重复的数组元素的个数。 这个题目其实是一个“水题”。使用HashSet类即可解决。 JAVA,集(Set)的特性是集中的元素是唯一的,即不重复;无序性,即不考虑...

    算法题解:统计一维整型数组中不重复的数组元素个数(JAVA代码)—水题

    题目是给定一个一维整型数组,要求统计这个数组中不重复的数组元素的个数。

    这个题目其实是一个“水题”。使用HashSet类即可解决。

    在JAVA中,集(Set)的特性是集中的元素是唯一的,即不重复;无序性,即不考虑元素的顺序。

    那么只需要将数组元素装入集中,输出集中元素的个数即可。


    算法设计(使用HashSet)

    package com.bean.algorithm.arrays;
    
    import java.util.HashSet;
    
    public class CountDistinctElementsInArray {
    
    	public static int countDistinct(int arr[], int n) {
    
    		HashSet<Integer> hs = new HashSet<Integer>();
    
    		for (int i = 0; i < n; i++) {
    			// add all the elements to the HashSet
    			hs.add(arr[i]);
    		}
    
    		// return the size of hashset as
    		// it consists of all Unique elements
    		return hs.size();
    	}
    
    	public static void main(String[] args) {
    		int arr[] = new int[] { 6, 10, 5, 4, 9, 120, 4, 6, 10 };
    		System.out.println(countDistinct(arr, arr.length));
    	}
    
    }
    

    程序运行结果:

    6


    算法设计(不使用HashSet)

    如果不使用HashSet的话,另外一种算法设计思想:

    先对数组元素进行排序处理。

    package com.bean.algorithm.arrays;
    
    import java.util.Arrays;
    
    public class CountDistinctElementsInArray2 {
    
    	static int countDistinct(int arr[], int n) {
    		// First sort the array so that all
    		// occurrences become consecutive
    		Arrays.sort(arr);
    
    		// Traverse the sorted array
    		int res = 0;
    		for (int i = 0; i < n; i++) {
    
    			// Move the index ahead while
    			// there are duplicates
    			while (i < n - 1 && arr[i] == arr[i + 1]) {
    				i++;
    			}
    			res++;
    		}
    		return res;
    	}
    
    	public static void main(String[] args) {
    		int arr[] = { 6, 10, 5, 4, 9, 120, 4, 6, 10 };
    		int n = arr.length;
    		System.out.println(countDistinct(arr, n));
    	}
    
    }
    

    程序运行结果:

    6


    第三种算法设计

    package com.bean.algorithm.arrays;
    
    /*
     * https://blog.csdn.net/seagal890/article/details/93527516
     * */
    public class CountDistinctElementsInArray3 {
    
    	static int countDistinct(int arr[], int n) {
    		int res = 1;
    
    		// Pick all elements one by one
    		for (int i = 1; i < n; i++) {
    			int j = 0;
    			for (j = 0; j < i; j++)
    				if (arr[i] == arr[j])
    					break;
    
    			// If not printed earlier,
    			// then print it
    			if (i == j)
    				res++;
    		}
    		return res;
    	}
    
    	// Driver code
    	public static void main(String[] args) {
    		int arr[] = { 6, 10, 5, 4, 9, 120, 4, 6, 10 };
    		int n = arr.length;
    		System.out.println(countDistinct(arr, n));
    	}
    
    }
    

    程序运行结果:

    6

     

    展开全文
  • 题目:写一个函数,使给定的一个3x3二维整型数组转置,即行列互换

    题目:写一个函数,使给定的一个3x3二维整型数组转置,即行列互换
    代码:

    #include<stdio.h>
    void main(){
    
    void switchArray(int [3][3]);
    int array[][3] = {{1,2,3},{4,5,6},{7,8,9}};
    int i,j;
    switchArray(array);
    
    return 0;
    }
    
    void switchArray(int array[][3]){
        int newArray[3][3];
        int i,j;
        for(i=0;i<3;i++){
            for(j=0;j<3;j++){
                newArray[j][i] = array[i][j];
            }
        }
        for(i=0;i<3;i++){
            for(j=0;j<3;j++){
                printf("%d ",newArray[i][j] );
            }
        printf("\n");
        }
    
    }

    用指针实现:

    #include<stdio.h>
    void main(){
        void switchArray(int [3][3]);
        int array[][3] = {{1,2,3},{4,5,6},{7,8,9}};
        int i,j;
        int (*pToArray)[3];
        pToArray = array;
        switchArray(pToArray);
    
        return 0; 
        }
    
        void switchArray(int array[][3]){
        int newArray[3][3],(*pTArr)[3],(*pTNewArr)[3];
        int i,j;
        pTArr = array;
        pTNewArr = newArray;
    
    
        for(i=0;i<3;i++){
            for(j=0;j<3;j++){
                *(*(pTNewArr+j)+i) = *(*(pTArr+i)+j);
            }
        }
    
        for(i=0;i<3;i++){
        for(j=0;j<3;j++){
            printf("%d ", *(*(pTNewArr+i)+j));
        }
        printf("\n");
        }
    }
    展开全文
  • 魔方阵,所有的行、列和对角线都拥有相同的和。例如: 17 24 1 8 15 23 5 7 14 16 4 9 2 4 6 13 20 22 和 3 5 7 10 12 19 21 3 8 ...写一个程序读入一个维整型数组并判断...

    在魔方阵中,所有的行、列和对角线都拥有相同的和。例如:
    
    
     17	 24	  1	  8	 15					
     23	  5	  7	 14	 16		4	  9	  2
      4	  6 	 13	 20	 22	    和	3	  5	  7
     10	 12	 19	 21	  3		8	  1 	  6
     11	 18	 25	  2 	  9					
    
    写一个程序读入一个二维整型数组并判断它是否为魔方矩阵。
    
    **输入格式要求:"%d" 
    提示信息:"请输入矩阵的阶数(<=10):" "请输入矩阵:\n"  "a[%d][%d]:"
    **输出格式要求:"该矩阵不是魔方阵!\n"  "该矩阵为魔方矩阵
    #include<stdio.h>
    #include<stdlib.h>
    #define N 10
    int main()
    {
        int a[N][N];
        int n,i,j,sum,old;
        printf("请输入矩阵的阶数(<=10):");
        scanf("%d", &n);
        printf("请输入矩阵:\n");
        for(i=0; i<n; i++)
        {
            for(j=0; j<n; j++)
            {
                printf("a[%d][%d]:",i,j);
                scanf("%d",&a[i][j]);
            }
        }
        old=0;
        for(i=0;i<n;i++)
        {
            old+=a[0][i];
        }
        for (i=0;i<n;i++)
        {
            sum=0;
            for(j=0;j<n;j++)
            {
                sum=sum+a[i][j];
            }
        }
        if(sum!=old)
        {
            printf("该矩阵不是魔方阵!\n" );
            exit(0);
        }
           for (i=0;i<n;i++)
        {
            sum=0;
            for(j=0;j<n;j++)
            {
                sum=sum+a[j][i];
            }
        }
        if(sum!=old)
        {
            printf("该矩阵不是魔方阵!\n" );
            exit(0);
        }
        sum=0;
        for(i=0;i<n;i++)
        {
            sum=sum+a[i][i];
        }
        if(sum!=old)
        {
           printf("该矩阵不是魔方阵!\n" );
            exit(0);
        }
        sum=0;
        for(i=0;i<n;i++)
        {
            sum=sum+a[i][n-i-1];
        }
         if(sum!=old)
        {
           printf("该矩阵不是魔方阵!\n" );
            exit(0);
        }
        printf("该矩阵为魔方矩阵!");
    }
    

    展开全文
  • 一个将 1维整型数组转换为字符串类型的方法! 函数参数为一个1维int型数组 返回值为一个 String类型数组!谢谢 良好的开始 | 浏览 1864 次 2011-07-09 22:08 2011-07-09 22:50 最佳...

    求助!!java!! 求一个将 1维整型数组转换为字符串类型的方法!

    函数参数为一个1维int型数组 返回值为一个 String类型数组!谢谢
    良好的开始 | 浏览 1864 次  2011-07-09 22:08
    2011-07-09 22:50 最佳答案
    public class TextSuper {
    	static String arr2String(int [] arr){
    		StringBuilder strb=new StringBuilder();
    		for(int x:arr)
    			strb.append(x);
    		return strb.toString();
    	}
    	public static void main(String args[]){
    		int [] i =new int []{1,2,3,4,5,6};
    		String x=arr2String(i);		
    		System.out.println(x);
    	}
    }
    追问
    大哥!你java学的真好!再帮小弟解释解释吧!
    (int x:arr)
    append(x)
    这两个是什么??
    谢谢!!
    追答
    1、for(int x:arr)  for 循环的加强用法 等效于
       for(int i =0;i<arr.length;i++)
        上述的x 就等于arr[i]  逐个取出数组里的元素
    
    2、append(x)方法,就是将括号内的内容添加到 StringBuilder strb 的后面
    展开全文
  • 在一维整型数组中找出其中最大的数及其下标。 函数接口定义: int fun(int *a,int *b,int n); 其中形参a 、b、n都是用户传入的参数。函数fun的功能是指针a所指向的一维数组找出其中最大的数及其下标,下标存到...
  • 请编写一程序,找出并删除一维整型数组 a[100] 最小值元素。 要求: (1)数组各元素通过键盘输入获得初值 (2)所有对数组元素的引用必须通过指针完成 ...
  • 指针与一维整型数组

    千次阅读 2018-12-12 17:40:22
    通常情况下,定义一个数组,int a[5]={1,2,3,4,5};定义一个指针,int *p=a; a与p都表示&amp;amp;amp;a[0];而&amp;amp;amp;a表示的地址与a和p数值上一样;但a和 p都表示四字节内存块的地址;而&amp;...
  • void reverseArray(int a[],int n) {  for(int i = 0; i  {  int temp = a[i];  a[i] = a[n-1-i];  a[n-1-i] = temp;  } } int main() {  printf("请输入5整数\n");
  • 1.已知一个3×4二维整型数组a,从键盘输入每个元素的值,计算每行的平均值存入一个一维单精度型数组b,并输出b数组的元素值(保留1位小数)。 例如: 输入:1 2 3 4 5 6 7 8 8 7 4 5 输出: 2.5 ...
  • 一个函数,使给定的一个3X3的二维整型数组转置,即行列互换 #include <stdio.h> #include <stdlib.h> #include <string.h> void cal(int a[][3]) { int b[3][3]; for (int i = 0; i < 3; i...
  • 一个函数,使给定的一个3*3的二维整型数组转置,即行列呼唤(C语言) 题目要求:如标题 思路: 现有一个二维数组a[3][3],需要将其转置,可以先定义一个空数组b[3][3] 将a[j][i]放入到b[i][j],此时b即为a的...
  • //题目:写一个函数,使给定的一个3*3的二维整型数组转置,即行列互换。 #include &lt;stdio.h&gt; #define M 3 //规定二维数组的行数和列数 #define N 3 void convert(int a[M][N]) //可以实现任意行数、...
  • #include <stdio.h> int main() { void fun(int x[3][3]); int a[3][3]={{5,2,3},{7,6,9},{0,4,1}};... printf("原数组值为:\n"); for(i=0;i<3;i++) { for(j=0;j<3;j++) { printf("%5d",a[i][j]);
  • 题目: 写一个函数,使给定的一个3X3的二维整型数组转置,即行列互换 源码: 运行结果如下:
  • //写一个函数,使给定的一个3*3的二维整型数组转置,即行列互换 #include <stdio.h> int main(){ void zhuanzhi(int array[3][3]); //输入一个3*3的二维数组 int a[3][3],b[3][3]; int i,j; for(i=0;i<...
  • package hanqi; import java.util.Scanner; public class Test7 { ... //主方法定义一个大小为50的一维整型数组,数组i名为x,数组存放着{1,3,5,…,99}输出这个数组的所有元素,每输出十个换一行 ...
  • //定义一个初始值是2的一维整型数组,用户输入一个值, // 将该值插入到数组恰当的位置(该数组是按照从小到大进行排序的)。 public class Exerse1{  public static int[] toInsertNum(int[] arr,int a,int p...
  • (C语言)二维整型数组的“最大点”(驻点)

    千次阅读 多人点赞 2019-11-17 21:35:50
    求二维整型数组的“最大点”。二维数组的“最大点”定义为:某个数是所在行的最大值,并且是所在列的最大值。注意:某行或某列上可能有多“最大点”。 【输入形式】 从控制台读入二维数组。 第行只有以空格分隔...
  • #include int Back(int Buf[],int iLen) { if(iLen) return -1; int imax1,imax2; //第大和第二大 int i,temp; //存放当前数 imax1=imax2=temp; for(i=0;i;i++) { te
  • 例题:请编写一个函数fun,它的功能是:找出一维整型数组元素最小的值和它所在的下标,最小的值和它所在的下标通过形参传回。数组元素的值已主函数赋予。 主函数a是数组名,n是a的数据个数,min存放...
  • 求帮助,用c
  • 按如下函数原型编程从键盘输入一个m行n列的二维整型数组,然后计算二维数组正数的总和与均值。其中m和n的值由用户键盘输入。已知m和n的值都不超过10。输入二维数组的函数原型如下: void InputArray(int a[][N],...
  • printf("输入一个3x3的二维整型数组\n"); for(;a;a++) { printf("现在输入的是第%d行第%d列元素:",a/3,a%3+1); printf("\n"); scanf("%d",&A[a/3][a%3]); } RS(A); } 总结:a 和 b 是数组名,而数组名...
  • (3)二维字符数组和二维整型数组的存放地址: ------------------ see the intarray pointer addresses *(pt+0)=422aa8 *(pt+1)=422ab0 *(pt+2)=422ab8 ------------------ see the chararray ...
  • public static void sort(int[] arr){ for (int i = 1; i < arr.length; i++) { for (int j=i;j>0;j--){ if (arr[j]<=arr[j-1]){ break; }else{ ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 51,925
精华内容 20,770
关键字:

在一个一维整型数组中