LeetCode961 重复 N 次的元素
问题: 重复 N 次的元素
在大小为 2N 的数组 A 中有 N+1 个不同的元素,其中有一个元素重复了 N 次。
返回重复了 N 次的那个元素。
示例 1:
输入:[1,2,3,3]
输出:3
示例 2:
输入:[2,1,2,5,3,2]
输出:2
示例 3:
输入:[5,1,5,2,5,3,5,4]
输出:5
提示:
4 <= A.length <= 100000 <= A[i] < 10000A.length为偶数
链接:https://leetcode-cn.com/contest/weekly-contest-116/problems/n-repeated-element-in-size-2n-array/
分析:
0.AC做法,将数据排序,统计每个元素的个数,一旦某一个是N,返回这个数字。
1.2N个元素中有N+1个不同的元素,且一个元素重复了N次,则这个重复了N次的必定是唯一众数,且除非是最大值或者最小值,否则也必定是中数。
比赛期间尝试直接返回中位值,不过失败了,没继续深入,现在想来,只有是最大值或者最小值的时候才会失败,完全可以只统计最大值个数,最小值个数,如果有一个是N,返回,否则返回排序后中间的那个数字。
AC Code:
class Solution {
public:
int repeatedNTimes(vector<int>& A) {
if (A.size() == )
{
return A[];
}
int ret = ;
sort(A.begin(), A.end());
//ret = A[A.size() / 2];
int num = ;
ret = A[];
for (unsigned int i = ; i < A.size(); i++)
{
if (A[i] != ret)
{
ret = A[i];
num = ;
}
else
{
num++;
if (num == A.size() / )
{
return ret;
}
}
}
return ret;
}
};
赛后AC code
class Solution {
public:
int repeatedNTimes(vector<int>& A) {
if (A.size() == )
{
return A[];
}
int ret = ;
sort(A.begin(), A.end());
int num = A[];
int times = ;
for (int i = ; i < A.size(); i++)
{
if (num != A[i])
{
if (times == A.size() / )
{
return A[];
}
break;
}
else
{
times++;
}
}
num = A[A.size() - ];
times = ;
for (int i = A.size()-;i>= ;i--)
{
if (num != A[i])
{
if (times == A.size() / )
{
return num;
}
break;
}
else
{
times++;
}
}
ret = A[A.size() / ];
return ret;
}
};
其他:
1.简单的题,随便就过了,如果对时间有要求的话,可能就得用第二种方法才能过了。
不考虑太多,统计每个元素个数就够了。
2.第一code:
class Solution:
def repeatedNTimes(self, A):
"""
:type A: List[int]
:rtype: int
"""
n = len(A)//
l = dict()
for e in A:
if e in l:
l[e] +=
else:
l[e] =
for e in l:
if l[e] == n:
return e
统计个数找个数是N的,可能都没怎么多想吧
第二code:
class Solution(object):
def repeatedNTimes(self, A):
"""
:type A: List[int]
:rtype: int
"""
d = set()
for num in A:
if num not in d:
d.add(num)
else:
return num
感觉更有意思一点,2N个元素,N+1个不同,其中一个还是有N个元素的,那么其他的都是只有一个元素,那么完全可以更快:答案必定是A[A.size()/2]和A[A.size()/2-1]中的一个,如果两者相同,即为结果,否则如果A[A.size()/2-1]==A[A.size()/2-2],是答案,否则A[A.size()/2]是答案。
LeetCode961 重复 N 次的元素的更多相关文章
- [Swift]LeetCode961. 重复 N 次的元素 | N-Repeated Element in Size 2N Array
In a array A of size 2N, there are N+1 unique elements, and exactly one of these elements is repeate ...
- jquery 实现重复点击一个元素时不重复执行效果
jquery 实现重复点击一个元素时不重复执行效果 这需要用到jquery的stop方法 实例 停止当前正在运行的动画: $("#stop").click(function(){ ...
- 用JS编写一个函数,返回数组中重复出现过的元素
用JS编写一个函数,返回数组中重复出现过的元素,见下面的代码: , , , , , , , ]; var getRepeat = function (arr) { var obj = {}; , le ...
- vector是序列式容器而set是关联式容器。set包含0个或多个不重复不排序的元素。
1.vector是序列式容器而set是关联式容器.set包含0个或多个不重复不排序的元素.也就是说set能够保证它里面所有的元素都是不重复的.另外对set容器进行插入时可以指定插入位置或者不指定插入位 ...
- Leetcode961. N-Repeated Element in Size 2N Array重复N次的元素
在大小为 2N 的数组 A 中有 N+1 个不同的元素,其中有一个元素重复了 N 次. 返回重复了 N 次的那个元素. 示例 1: 输入:[1,2,3,3] 输出:3 示例 2: 输入:[2,1,2, ...
- Java实现找出数组中重复次数最多的元素以及个数
/**数组中元素重复最多的数 * @param array * @author shaobn * @param array */ public static void getMethod_4(int[ ...
- 【python cookbook】【数据结构与算法】10.从序列中移除重复项且保持元素间顺序不变
问题:从序列中移除重复的元素,但仍然保持剩下的元素顺序不变 解决方案: 1.如果序列中的值时可哈希(hashable)的,可以通过使用集合和生成器解决.
- 力扣(LeetCode) 961. 重复 N 次的元素
在大小为 2N 的数组 A 中有 N+1 个不同的元素,其中有一个元素重复了 N 次. 返回重复了 N 次的那个元素. 示例 1: 输入:[1,2,3,3] 输出:3 示例 2: 输入:[2,1,2, ...
- 961.重复N次的元素
在大小为 2N 的数组 A 中有 N+1 个不同的元素,其中有一个元素重复了 N 次. 返回重复了 N 次的那个元素. 示例 1: 输入:[1,2,3,3]输出:3示例 2: 输入:[2,1,2,5, ...
随机推荐
- Quartz使用(1) - 初识quartz
1. 背景 由于最新的工作项目中,需要使用quartz框架,以完成相关的任务的定时执行.经过两周的调研与使用,本系列博客会参考官网及网上相关博客,结合工作项目中的使用,详细介绍quartz的各个方面. ...
- AngularJS directive 不执行
检查下directive的命名,是不是含有特殊符号和大写,全部改为小写就ok: 原因:html不支持骆驼峰命名,只支持小写:
- windows中的ubuntu
摘要 windows的cmd 实在是太难用,对于码农来说还是喜欢linux的命令行,功能强大:但是linux下的办公软件又没有windows下的强大,在windows下安装个虚拟机吧太卡了: 所以出了 ...
- Maven常用插件整理
maven内置变量 ${basedir}表示项目根目录,即包含pom.xml文件的目录; ${version}表示项目版本; ${project.basedir}同${basedir}; ${proj ...
- Static 用法
1.Static关键字含意:static译文是静态的,静止的,因此使用 static 修饰符声明属于类型本身而不是属于特定对象(new创建的对象)的静态成员. 2.修饰使用范围 static 修饰符可 ...
- Go编程语言学习笔记
go如何组织代码?它有一个工作空间的概念.所谓工作空间其实就是一个目录,其中包含三个子目录. src目录包含Go的源文件,它们被组织成包(每个目录都对应一个包), pkg目录包含包对象, bin目录包 ...
- Java —异常
异常简介 有异于常态,和正常情况不一样,有错误出现,阻止当前方法或作用域,称为异常. Java中的异常类都继承Throwable类,它有两个子类:Error和Exception.Error很少接触,主 ...
- polyfill 一个解决兼容的绝佳方案
polyfill为何物 Polyfill你可以理解为“腻子”,就是装修的时候,可以把缺损的地方填充抹平. 举个例子,html5的storage(session,local), 不同浏览器,不同版本,有 ...
- 显示C++ vector中的数据
C++ 中的vector是一个容器数据类型,不能使用cout直接显示容器中的值. 以下程序中,myvector 是一个vector数据类型.将myvector替换为需要输出的vector. for(i ...
- [转载]开启debug调试模式
debug+trace模式可以查看开发过程中TP的错误信息,可以更好地帮助开发者debug.但是debug模式的开启还不是简单的在配置文件中中设置就可以的,经过查资料摸索,找到一种有效的方法. 首先在 ...