• 《N诺机试指南》(一)数组妙用


    题目A:

    大家思路有可能是这样: 将输入数据全部存储到一个数组里,然后可以冒泡排序一波,从小到大排序

    那么怎么找到重复次数呢:我是这样想的,新定义数组b,原数组a,首先b[0] = a[0],定义指针i指向数组a,j指向原数组b,初值都是0,如果a[i] == b[j],是重复元素,那么i++,continue,否则b[++j] = a[i++]

    这个有点复杂,有没有简单做法?

      数不多:可以利用数组的标记特性:定义数组a,全部赋值为0,然后输入为k,则令a[k]++,最后打印a[k]>0的即可,见代码1

      数很多,范围很大:可以用Map存储,key作为数字,对应value作为出现次数,找到重复的取出对应value+1,见代码2

               也可以用vector存储,遍历数组如果不在vector里那么就加入到vector里并且赋值为1,如果在则v[i]+1

    代码1:

    #include <bits/stdc++.h>
    using namespace std;
    
    int a[105] = {0};//注意尽量把数组定义在全局,方便很多 
    
    int main(){
    	int n,x;
    	scanf("%d", &n);
    	for(int i=0; i<n; i++){
    		scanf("%d", &x);
    		a[x]++;
    	}
    	
    	for(int i=0; i<n; i++){
    		if( a[i]>0 ){
    			printf("%d:出现次数%d
    ", i, a[i]);
    		} 
    	}
    	
    	return 0;
    }

     结果:

    代码2:

    public class CountNumber{
      
        public static void mian(String[] args){
            int[] arr = {1,2,3,4,8,2,2,5,3,1,2,4,5,2}
            int[] ans = maxTimsx(arr);
            System.out.println("数字:" + ans[0] + "出现" + ans[1] + "次")
        }  
     
        public static int[] maxTimes(int[] arr){
            if(arr == null || arr.length < 1){
                    return null;
            }
            HashMap<Integer,Integer> map = new HashMap<Integer,Integer>();
            
            int times = 0;
            int number = 0;
         
          //缺少一个步骤:先把arr数组排序
            for(i=0;i<arr.length;i++){
                if(map.get(arr.[i]) == null){//没有就存进map里去
                    map.put(arr[i],1)//初始value为1
                }
            }else{
                integer value = map.get(arr[i]) + 1;//有说明有重复的,加1
                map.put(arr[i],value)
                if(value > times){//找出最大的
                    times = value;
                    number = arr[i];
                }
            }
     
            return new int[] {number,times};
        }
    }
    

    题目A plus版本:

    解析:可以新加一个数组,用来存储拥有相同数字个数i的最大那个值

    代码:

  • 相关阅读:
    数组相似性计算
    关于GANs原论文里的数学证明
    Python 画个图
    Golang脱坑指南: goroutine(不断更新)
    Java面试细节整理(不断更新)
    从统计看机器学习(二) 多重共线性的一些思考
    从统计看机器学习(一) 一元线性回归
    数据库存储技术基础(一) 字典编码
    JVM内存管理笔记
    R语言rank函数详细解析
  • 原文地址:https://www.cnblogs.com/Whgy/p/12313288.html
Copyright © 2020-2023  润新知