zoukankan      html  css  js  c++  java
  • 《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的最大那个值

    代码:

  • 相关阅读:
    ASP.NET Core 集成 WebSocket
    如何在CentOS7上安装桌面环境?
    Visual Studio 2017 远程调试(Remote Debugger)应用
    cmd sc命令进行服务操作
    EntityFrameworkCode 操作MySql 相关问题
    Windows下安装PHP开发环境
    未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序
    System.Runtime.InteropServices.COMException (0x800A03EC): 无法访问文件
    c# WinFo判断当前程序是否已经启动或存在的几种方式
    MVC自定义视图引擎地址
  • 原文地址:https://www.cnblogs.com/Whgy/p/12313288.html
Copyright © 2011-2022 走看看