lintcode1613 最高频率的IP

文章重在:算法的思路、代码实现、注释

描述

给定一个字符串数组lines, 每一个元素代表一个IP地址,找到出现频率最高的IP。(给定数据只有一个频率最高的IP

样例1:

输入 = ["192.168.1.1","192.118.2.1","192.168.1.1"]
输出  "192.168.1.1"

样例2:

输入 = ["192.168.1.1","192.118.2.1","192.168.1.1","192.118.2.1","192.118.2.1"]
输出 "192.118.2.1"

思想

1.lines[]:遍历每一个元素值,frequen[]记录:每个元素初值次数为1

2.对遍历中的元素值lines[j],与第一个元素lines[k]开始比较,若相等:frequen[k]频率值加1,并终止lines[k]的遍历;若不等:遍历lines[k]的下一个值,直至遍历到lines[j]前一个值结束

3.寻找frequen[]中最大值

注:我在微信公众号上有lintcode算法专栏,按照难度系数划分,我写算法过程是:手写逻辑->eclipse实现调试->lintcode提交。公众号为:山有木兮fanyj。算法专栏的第一篇有更详细的注解1613算法

代码

public class Solution {
    /**
     * @param ipLines: ip  address
     * @return: return highestFrequency ip address
     */
    public String highestFrequency(String[] lines) {
        int len = lines.length;
    	int[] frequen = new int[len];
	int j = 0; 
	for (j = 0; j < len; j++) {
	    frequen[j] = 1; // 1.遍历每一个元素,均出现一次
	    int k = 0;
	    for (; k < j; k++) { // 2.在当前遍历元素中,比较之前的元素,若重复出现,次数加1       并终止比较,否则,进入下一个遍历元素
	        if (lines[k].equals(lines[j])) {
		    requen[k]++;
		    break;
	        }
	    }
	}
	/* 3.寻找frequen 数组中 最大的数 */
	int max = 0;
	for (int i = 1; i < lines.length; i++) {
	   if (frequen[max] < frequen[i]) {
	       max = i;
	   }
	}
	System.out.println("出现的次数" + frequen[max]);
	return lines[max];
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值