您的位置:首页 > 健康 > 美食 > 网站制作优化排名_设计logo网站有哪些免费_企业网站建设哪家好_十大营销案例分析

网站制作优化排名_设计logo网站有哪些免费_企业网站建设哪家好_十大营销案例分析

2025/1/8 7:27:00 来源:https://blog.csdn.net/2301_79954395/article/details/144970140  浏览:    关键词:网站制作优化排名_设计logo网站有哪些免费_企业网站建设哪家好_十大营销案例分析
网站制作优化排名_设计logo网站有哪些免费_企业网站建设哪家好_十大营销案例分析

审题:

需要我们返回出现次数超过一半的元素的值

思路:

由于限制了空间复杂度为常数级别,所以哈希表或者额外创建数组的方式是无法通过的。

那么我们就使用双指针的方法。

首先我们需要进行排序,让数值相同的元素放在一起

left指针负责指向当前值的第一个位置,right负责寻找与当前值不同的下一个值的位置。

若找到不同的值就判断:

right-left>n/2则找到了出现一半以上的数据,把left索引的值存给answer

解题:

(1)预处理

(2)核心代码

在right进行搜索的时候会遇到三种情况

1.找到不同的值

2.没找到不同的值,但是还没搜索完

3.没找到不同的值,但是搜索完了

情况1:判断是否满足个数超过一半,满足就直接把值给answer。无论是否满足都要更新left索引

情况2:继续搜索

情况3:由于此时left和right指引的位置都是同一个数据,所以在判断数据个数的时候还要加个1

(3)特殊处理

当数据个数为1的时候,上述代码无法判断,所以我们直接让answer为该数据即可

数组中出现次数超过一半的数字_牛客题霸_牛客网

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com