0-9数字tcp 最大重传次数相隔次数

博客分类:
今天面试碰到 "的数字,查找出现次数最多的3个数字.并求这他们出现的次数."的题目,大概写了一下.结果是出来了,但是我觉得这样写不好,本人算法很菜,大家有没有更好的解决办法?
package com.
import java.util.R
* 的数字,查找出现次数最多的3个数字.并求这他们出现的次数.
* @author Administration
public class TestFindMoreTimes {
* @param args
public static void main(String[] args) {
// TODO Auto-generated method stub
int nums []= new int[1000];
//初始化数据,产生的数字.
for (int i = 0; i & nums. i++) {
Random m = new Random();
nums[i] = m.nextInt(10);//随即产生0-9的数字,然后放入到数组中
print(nums);
find(nums);
* 查找重复次数最多的3个数
* @param nums
public static void find(int[] nums){
int times[] = {0,1,2,3,4,5,6,7,8,9};
//存放出现的次数数组,数组的下标为0~9中数字.比如: sum[0]=5 表示0出现5次.sum[1]=8 表示1出现8次.依次类推.
int sum [] = new int[times.length];
for (int i = 0; i & times. i++) {
int k = 0;
for (int j = 0; j & nums. j++) {
if(times[i] == nums[j]){
findMax(sum);
* @param nums
public static void print(int[] nums){
for (int i = 0; i & nums. i++) {
if(i != nums.length-1){
System.out.print(nums[i]+",");
System.out.print(nums[i] +"\n");
* 查找数组中最大的三个数
* @param times
public static void findMax(int times[]){
//最大3个数
int max1 = 0,max2 = 0,max3 = 0;
//最多3个次数.
int maxTime1 = 0,maxTime2 = 0,maxTime3 = 0;
print(times);
//查找第一多的
for (int i = 0; i & times. i++) {
if(maxTime1 & times[i]){
maxTime1 = times[i];
System.out.println("出现次数第一多的数:"+max1+",出现的次数为:"+maxTime1);
//把已经查找过的数据填充为-1
times[max1] = -1;
for (int i = 0; i & times. i++) {
if(maxTime2 & times[i] && times[i] != -1){
maxTime2 = times[i];
System.out.println("出现次数第二多的数:"+max2+",出现的次数为:"+maxTime2);
//把已经查找过的数据填充为-1
times[max2] = -1;
for (int i = 0; i & times. i++) {
if(maxTime3 & times[i] && times[i] != -1){
maxTime3 = times[i];
System.out.println("出现次数第三多的数:"+max3+",出现的次数为:"+maxTime3);
2,4,3,6,9,2,1,9,3,7,4,1,0,1,2,2,1,5,8,8,4,1,1,7,6,1,9,6,5,5,6,9,1,8,7,9,9,1,6,3,4,4,6,5,3,1,1,5,7,7,8,0,1,9,3,5,2,4,4,4,0,8,5,3,2,1,9,6,7,9,8,2,6,4,1,7,2,0,9,1,4,6,6,5,5,6,3,5,3,3,8,3,6,3,1,0,6,2,7,1,8,4,7,3,3,1,3,1,3,7,4,0,9,7,9,4,6,0,2,1,9,2,8,8,0,1,6,4,4,4,0,4,4,3,3,4,9,3,0,3,5,6,3,2,4,7,5,1,3,7,4,4,4,8,5,7,9,8,7,1,3,1,0,7,8,4,6,9,5,2,8,5,2,7,3,8,4,4,6,3,5,9,2,8,9,8,7,1,6,5,1,4,4,1,5,8,7,5,9,0,7,4,6,5,3,6,1,2,9,6,2,1,1,8,4,1,2,6,6,0,0,4,9,0,8,9,5,7,7,2,3,8,4,2,7,8,7,5,3,4,4,6,9,5,0,4,8,7,1,6,3,1,9,7,4,9,0,4,0,3,5,8,0,8,6,7,8,1,0,2,0,8,3,0,1,1,7,6,6,2,2,8,1,7,8,2,5,2,5,8,4,0,0,2,4,2,8,3,4,2,5,6,4,4,8,8,7,2,3,8,0,0,6,4,2,1,6,7,1,5,3,7,1,2,3,4,5,1,8,1,5,1,3,1,8,5,1,0,1,1,8,4,6,2,6,8,0,2,7,4,3,0,8,5,0,1,2,8,1,2,9,0,4,8,5,5,8,1,5,8,9,5,2,9,8,2,2,0,2,6,1,9,0,5,8,4,6,9,1,6,8,0,7,0,3,5,5,9,5,9,9,6,1,9,2,8,2,7,6,8,0,8,7,1,4,2,2,7,6,1,7,0,9,7,6,4,4,3,3,5,7,7,8,9,6,9,6,3,7,6,3,2,5,2,5,8,2,7,1,0,7,7,5,6,8,9,2,3,4,9,6,1,3,9,1,9,0,5,6,7,0,7,6,0,5,3,7,4,5,0,2,1,1,8,2,4,8,4,5,4,8,2,2,6,1,7,0,9,3,1,5,4,0,4,2,9,4,5,4,7,7,0,2,1,7,5,3,5,6,0,7,3,6,5,9,5,4,4,1,6,5,6,1,1,4,2,1,9,7,4,6,3,6,9,1,3,4,0,1,8,1,5,0,3,4,9,3,1,7,8,2,2,2,2,5,1,4,0,2,2,2,1,2,9,9,8,2,9,6,0,4,9,5,2,1,3,7,0,2,5,8,5,0,2,7,0,2,6,2,4,7,6,1,2,3,5,7,5,6,2,1,5,0,2,1,2,3,4,7,8,3,8,0,8,2,5,5,8,0,1,3,3,7,5,9,8,8,1,5,0,5,4,1,9,2,1,0,9,1,0,6,7,8,4,9,7,9,0,0,8,2,5,1,7,0,7,5,8,5,9,6,6,6,3,1,5,0,8,3,0,3,4,8,4,3,3,9,3,0,7,8,9,3,4,5,6,0,9,7,2,1,1,8,4,6,0,3,4,7,4,6,7,9,3,0,3,9,6,9,2,2,2,5,5,9,0,0,6,2,4,1,1,7,6,3,9,5,6,6,6,8,8,1,2,0,4,3,0,9,4,5,4,9,1,7,7,2,1,1,0,0,0,9,3,3,1,9,3,3,7,3,7,1,2,2,6,0,4,8,9,0,7,8,3,8,3,4,1,2,8,1,6,0,1,2,1,9,2,8,3,2,5,8,5,9,3,2,1,6,9,7,6,5,3,0,1,4,4,2,8,4,4,2,0,9,0,7,7,7,6,4,0,6,9,2,4,7,2,3,9,9,8,3,8,3,8,1,3,6,9,8,5,8,1,4,2,0,2,9,4,2,7,6,1,9,6,3,0,4,1,8,1,3,4,5,2,0,5,5,3,8,0,9,0,1,3,4,8,1,5,0,9,6,5,0,7,2,8,2,3,2,9,9,2,4,7,0,8,6,4,0,8,6,8,3,6,6,7,5,3,0,1,3,7,1,6,3,8,4,5,4,1,2,9,0,5,7,1,7,1,2,9,3,8,1,2,7,5,3,8,7,1,7,3,0,8,2,9,6,8,6,0,9,9,5,4,3,8,1,2,2,2,2,3,9,8,5,5,5,5,2,9,8,8,1,3,0,1,1,9,3,7,7,7,2,2,3,6,3,7
96,118,112,101,100,95,90,94,102,92
出现次数第一多的数:1,出现的次数为:118
出现次数第二多的数:2,出现的次数为:112
出现次数第三多的数:8,出现的次数为:102
论坛回复 /
(19 / 5417)
稍微改进一下吧,查找的时候没必要双重循环
public static void find(int[] nums){
int times[] = {0,1,2,3,4,5,6,7,8,9};
//存放出现的次数数组,数组的下标为0~9中数字.比如: sum[0]=5 表示0出现5次.sum[1]=8 表示1出现8次.依次类推.
int sum [] = new int[times.length];
for (int i = 0; i & times. i++) {
int k = 0;
for (int j = 0; j & nums. j++) {
if(times[i] == nums[j]){
findMax(sum);
用一次循环就OK了
public static void find(int[] nums){
//存放出现的次数数组,数组的下标为0~9中数字.比如: sum[0]=5 表示0出现5次.sum[1]=8 表示1出现8次.依次类推.
int sum[] = new int[10];
for (int j = 0; j & nums. j++) {
sum[nums[i]]++;
findMax(sum);
应该是sum[nums[j]]++;
浏览: 288608 次
来自: 重庆
这个注册码好用的,记录了一下 http://www.danie ...
有问题啊,下拉框会变小啊
个人还是比较看好GUI Design Studio的,分享一个 ...
xzz7175327 写道感谢、、、十分有用!不客气
感谢、、、十分有用!【求助】输入一个16位长整型数据
计算0-9出现的次数【c语言吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:546,333贴子:
【求助】输入一个16位长整型数据
计算0-9出现的次数收藏
#include &stdio.h&main(){ int c,i,j,s[10]={0,0,0,0,0,0,0,0,0,0}; scanf ("%ld",&a); for(i=0;i&16;i++) {
a=a/10; switch(c)
case 9:s[9]++;
case 8:s[8]++;
case 7:s[7]++;
case 6:s[6]++;
case 5:s[5]++;
case 4:s[4]++;
case 3:s[3]++;
case 2:s[2]++;
case 1:s[1]++;
case 0:s[0]++;
} } for(i=0;i&10;i++)
printf ("%d出现了%d次!\n",i,s[i]);}这是我自己写的代码
但是最多只能算十位数的
输入多了就不能运行
求解0 出现多次是因为我是16次循环
后面的就都是0了。下面附图求大神指点。
达内c语言培训,0基础从入门到精通120天,先就业后付款,签订c语言就业协议,c语言培训首选达内,不就业免费重学,70000家名企联合招聘!
没有大神在吗?求指导啊!!
长整形的长度不够了……
#include &stdio.h&main(){int i,s[10]={0,0,0,0,0,0,0,0,0,0};while((c = getchar()) != '\n'){switch(c){case '9':s[9]++;case '8':s[8]++;case '7':s[7]++;case '6':s[6]++;case '5':s[5]++;case '4':s[4]++;case '3':s[3]++;case '2':s[2]++;case '1':s[1]++;case '0':s[0]++;}} for(i=0;i&10;i++)printf ("%d出现了%d次!\n",i,s[i]);}希望能满足你的要求。
16位长整型数据指的是 [二进制位] 不是 [十进制位]
16位长整型数据?标准中long型数据的最小存储空间为32位,通常Win32系统中采用32位存储long,这里的位指的是二进制位,你的题目是不是存在问题
for(i=0;i&16;i++)
// 这个用for循环有问题,因为a=a/10;反复进行,当你输入的数位数小于16位时,下面的循环会多次计数0 。应把循环改为while(a&0){c=a%10;a=a/10;switch(c){case 9:s[9]++;case 8:s[8]++;case 7:s[7]++;case 6:s[6]++;case 5:s[5]++;case 4:s[4]++;case 3:s[3]++;case 2:s[2]++;case 1:s[1]++;case 0:s[0]++;}}
有关long型溢出的问题:你可以使用float类型,或者用字符串数组。
登录百度帐号推荐应用查看: 3079|回复: 11
统计0-9数字的出现次数
阅读权限20
在线时间 小时
如附件中的说明,用公式统计A列中数字0-9的出现次数,同一范围的放在同一单元格,在此先谢谢各位热心的高手!
(1.7 KB, 下载次数: 103)
19:11 上传
点击文件名下载附件
阅读权限95
在线时间 小时
有这必要吗,做什么用?
阅读权限95
在线时间 小时
留个记号!
阅读权限95
在线时间 小时
=IF(MIN(COUNTIF($A1:$A21,0),3)=COLUMN(A1)-1,0,&&)&SUM(LARGE(IF(1+TEXT(COUNTIF($A1:$A21,ROW(1:9)),&[&2]!3&)=COLUMN(A1),ROW(1:9),),ROW(1:9))*10^ROW(2:10))%数组右拉
阅读权限20
在线时间 小时
玩彩票用的::L
阅读权限50
在线时间 小时
半自动的方法还是有的,全自动的就不懂
阅读权限20
在线时间 小时
非常感谢天道之剑---零天!!!!!!!!!!谢谢了!!!!!!!
阅读权限95
在线时间 小时
统计0次的:=IF(COUNTIF(A1:A21,0),&&,0)&SUBSTITUTE(SUM(LARGE((COUNTIF(A1:A21,ROW($1:$10)-1)=0)*(ROW($1:$10)-1),ROW($1:$10))*10^(10-ROW($1:$10))),0,)数组公式!
统计1次的:=IF(COUNTIF(A1:A21,0)=1,0,&&)&SUBSTITUTE(SUM(LARGE((COUNTIF(A1:A21,ROW($1:$10)-1)=1)*(ROW($1:$10)-1),ROW($1:$10))*10^ROW($1:$10)),0,)
其它同理!
阅读权限95
在线时间 小时
彩票,又见彩票!
阅读权限95
在线时间 小时
一剑老师的公式,学习了!太强了!
最新热点 /1
ExcelHome每周都有线上直播公开课,
国内一流讲师真身分享,高手贴身答疑,
赶不上直播还能看录像,
关键居然是免费的!
厚木哥们都已经这么努力了,
你还好意思说学不好Office。
玩命加载中,请稍候
玩命加载中,请稍候
Powered by
本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任! & & 本站特聘法律顾问:徐怀玉律师 李志群律师鍙?渶涓

我要回帖

更多关于 删除次数达到最大值 的文章

 

随机推荐