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, ...
随机推荐
- struts2的java.lang.NoSuchMethodException异常处理
1. 你有没有试试看 其它的方法能不能用,要是都是这种情况的话,可能是你的Action类没有继承structs里面的DispatchAction或者其它的类.还有你注意下方法的参数列表,类型顺序要正确 ...
- macOS 使用软件(外加装逼特效)
macOS 使用软件(外加装逼特效) Backgroud 和 火萤: 动态桌面壁纸 iTools Pro: macOS 版本的爱思助手 MEGAsync: 网盘工具 Microsoft Remote ...
- SEO--HTML meta标签总结
<!DOCTYPE html> <!-- 使用html5 doctype,不区分大小写--> <html lang="zh-CN"> <h ...
- JavaFX--第3天窗口布局
1.windows之间的交互 2.关闭程序 3.布局镶嵌 1.windows之间的交互 我们要实现“确定”.“取消”之类的功能:就像我们平时使用Word的时候要关闭会提示要不要保存的信息. 步骤如下: ...
- 关于“importer.GetNPOTScale() == TextureImporter::kNPOTKeep”问题的简单处理方法
在运行NGUI打包图集的时候碰到下图所示的错误,这个错误导致图片无法正确的规格进行图集生成.结果是图片变成各种诡异的尺寸!! 通过关键字搜索,发现国外有讨论这个问题的解决方案: 将图片转换为textu ...
- Win7无法将图标(Chrome谷歌浏览器更新后无法锁定也适用)锁定到任务栏解决办法
“将程序锁定到任务栏”是Windows 7中的一个非常有用的功能,它比之前的快速启动栏要来得简洁.但是我用了一段时间之后,发现“锁定到任务栏”这一个选项消失了,对图标点右键找不到这个图标,直接把图标拖 ...
- webConfig中<customErrors>节点配置
发布在远程计算机上的网站调试问题: 通常情况下我们会设置错误页,不让用户看到错误信息 这种WebConfig的配置方法是: <configuration> <system.web&g ...
- JS判断web网站访问端是PC电脑还是手机
通过JS语句判断WEB网站的访问端是电脑还是手机,以显示不同的页面! <script type="text/javascript"> <!-- //平台.设备和操 ...
- js获取url的参数和值的N种有效方法
js获取url的参数和值的N种有效方法 function getParameterByName(name) { name = name.replace(/[\[]/, "\\\[" ...
- linux 封禁ip
可以直接服务配置nginx.conf 添加 deny+IP 例如: 封禁单个IP deny 106.5.76.83; #封整个段即从123.0.0.1到123.255.255.254的命令deny 1 ...