龙空技术网

打基础之LeetCode算法题第60篇:统计一个元素连续出现的次数问题

吾是我师 500

前言:

而今大家对“java统计数组中元素出现的次数”大概比较看重,看官们都需要了解一些“java统计数组中元素出现的次数”的相关内容。那么小编在网络上网罗了一些关于“java统计数组中元素出现的次数””的相关资讯,希望小伙伴们能喜欢,兄弟们快快来学习一下吧!

一直很纠结算法的文章应该怎么写。最后觉得还是从最简单的level开始写吧,一开始就弄些重量级的,什么人工智能,机器学习的算法,还要有大量的数学以及优化的知识,小白们估计会很郁闷,当然我也不一定能做出来对吧。

我计划每题给出两种语言的解决方案,一种静态语言,一种动态语言。

我选择C语言,Python和Java作为实现语言,由于篇幅有限,其他语言的实现有兴趣的朋友请自己尝试。

LeetCode 485. 最大连续1的个数(Max Consecutive Ones)

问题描述:

给定一个二进制数组, 计算其中最大连续1的个数。

注:

输入的数组只包含 0 和1。输入数组的长度是正整数,且不超过 10,000。示例:C语言实现:

这是一个非常简单的题,解法也有很多种。

传统的方法是定义两个变量count和res,分别记录1出现的次数和1出现的最大次数。然后遍历整个数组,当遇到1的时候,count加1;当遇到0的时候说明接下来要重新统计1出现的次数了,这个时候要做两件事情,一是要将之前统计的次数和res比较,保存最大的到res中,二是,重置count。

当遍历结束的时候还是要拿count和res比较一次,因为这个时候count可能会比res大。

代码如下:

python语言的实现:

python的实现和C语言的基本类似。

代码如下:

这里再说一种算法,这种算法比较适合python这种支持动态扩展容器类对象的语言。

首先定义一个字典 D,和一个初始值为0的整型变量index。然后开始遍历nums。

遇到1的时候就往D[index]中赋值,然后index加1,遇到0的时候index重置为0。最后只要返回len(D)即可。

Java语言的实现:

Java的实现和C语言的实现完全一致。

代码如下:

标签: #java统计数组中元素出现的次数