- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在为多数元素问题编写一个分而治之的解决方案,如果 n 个整数序列中有一个元素出现超过 n/2 次,则它必须输出 1,否则输出 0。我的代码适用于我能想到的任何测试用例,但评分系统一直说它为测试用例提供了错误的答案。
n = int(input())
array = input().split()
for i in range(n):
array[i] = int(array[i])
def merge(alist, blist):
a = len(alist)
b = len(blist)
n = a + b
result = []
for i in range(n):
if len(alist) > 0 and len(blist) > 0:
if alist[0] < blist[0]:
result.append(alist[0])
alist.pop(0)
else:
result.append(blist[0])
blist.pop(0)
elif len(alist) == 0:
result.extend(blist)
elif len(blist) == 0:
result.extend(alist)
return result
def mergesort(numbers):
if len(numbers) > 1:
n = len(numbers)
alist = numbers[:(n//2)]
blist = numbers[(n//2):]
alist = mergesort(alist)
blist = mergesort(blist)
numbers = merge(alist, blist)
return numbers
array = mergesort(array)
key = array[n//2]
count = 0
for i in range(n):
if array[i] == key:
count += 1
if count > (n//2):
print(1)
else:
print(0)
谁能告诉我代码中的错误?
最佳答案
展开 comment回答:
在merge
函数中,当处理一个list
被耗尽的情况时,将另一个list
添加到合并的末尾list
和extend
,但是循环没有终止,非空的list
没有被清除,所以如果终端extend
出现得早,非空 list
的剩余部分重复多次。将循环更改为以下内容,使用 extend
剩余 list
的终端案例(添加了额外的清理以减少代码长度):
# Stop when first list exhausted, not after fixed repetitions
while alist and blist:
if alist[0] < blist[0]:
result.append(alist.pop(0))
else:
result.append(blist.pop(0))
# Only one will have contents, simpler to just unconditionally extend,
# rather than test and extend, since extending with empty list is harmless
result += alist
result += blist
旁注:pop(0)
在 list
上是 O(n)
,而 .pop()
是 O(1)
。对于大型排序,以下内容会更有效:
# Reverse once up front, so you can pop from right, not left
alist.reverse()
blist.reverse()
# Stop when first list exhausted, not after fixed repetitions
while alist and blist:
if alist[-1] < blist[-1]:
result.append(alist.pop())
else:
result.append(blist.pop())
# Only one will have contents, simpler to just unconditionally extend,
# rather than test and extend, since extending with empty list is harmless
result += alist[::-1]
result += blist[::-1]
关于算法 : Majority element,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40144454/
我在音乐项目中遇到了一个小的审美问题,它一直困扰着我一段时间。 我有一个类型 data Key = C | D | ...我可以构造一个 Scale来自 Key和 Mode . Mode区分例如大调和
我有两个 c++ 函数 (foo, goo) 在坐标存储格式中使用稀疏矩阵,也就是说,矩阵由 3 个数组给出:row_index[nnz]、column_index[nnz]、value[nnz]其中
将多维数组以行优先或列优先方式存储在内存中有什么区别? 据我所知,'C' 似乎遵循 Row Major 风格。 出于好奇,我想知道,一种风格比另一种风格有什么好处吗? 最佳答案 一般来说,您可以互相模
我遇到过这个问题,我有点困惑。给出了两个代码,并询问哪个需要更多时间或者两者是否需要相同的时间。代码是: void sumCal(int n,int a[][]){ int sum=0;
多数提交数据和多数提交数据的快照之间有什么区别,我应该关心它吗?如果这两个概念完全不同,何时以及如何选择一个? 我在阅读有关 mongodb 中事务的引用时发现了这些描述:https://docs.m
我正在尝试使用 NSArrays 和 NSPredicates 来过滤 UITableView 的某些单元格。我有一个名为 FilterTable 的 TableViewController 类,它由
我正在尝试将我的 ant 项目从 java 7 升级到 java 8。 (该项目部署在“Eclipse Kepler”中,带有“Java™ 8 support to Eclipse Kepler SR
我正在为多数元素问题编写一个分而治之的解决方案,如果 n 个整数序列中有一个元素出现超过 n/2 次,则它必须输出 1,否则输出 0。我的代码适用于我能想到的任何测试用例,但评分系统一直说它为测试用例
我想知道是否有办法在 ggplot2 中以特定角度旋转 panel.grid.major.x 线?我在文档中看到它使用 element_line但它没有 angle参数对应于 theme 中轴.tit
由于获得major.minor.release格式,我正在尝试更改svn修订号。 在我的配置中,每次提交时 svn 修订号都会增加 1。 应该可以改吧? 我正在研究如何使用 perl 来做到这一点,但
当前,每当更新到较新的版本号时,所有升级都可以正常工作,但是降级时却出现了奇怪的现象。似乎它将卸载现有版本,然后部分安装我要安装的版本,主exe在目标位置尚不存在,但会创建公告的快捷方式。打开宣传的快
John Major 等式是否可以证明函数外延性(可能依赖于安全公理)? Goal forall A (P:A->Type) (Q:A->Type) (f:forall a, P a) (g:fora
在对HBase进行重大压缩期间,将对HFiles进行分组,最后将具有单个HFile。如何在编程中动态验证压缩的结果。 最佳答案 步骤1.创建表 create 'mytable', 'col1' 步骤2
根据问题,我们必须找出一个元素是否出现超过 n/2 次,然后相应地打印 Yes 或 No。数字可以从 10^-3 到 10^3 不等。 我取了一个数组 count[2005],然后将 1000 添加到
我正在尝试为 Android 开发 BLE 应用程序。 有什么方法可以检测和读取 Android 设备上的 Beacon 的 UDID、Major、Minor? 我已经阅读了 RadiusNetwor
概念: ● 新生代 GC(Minor GC):从年轻代空间(包括 Eden 和 Survivor 区域)回收内存被称为 Minor GC,因为 Java 对象大多都具备朝生夕灭的特性,所以 Minor
我正在阅读 Raft paper并关注 secret life of data visualisation似乎多数在 Raft 中至关重要,无论是领导选举还是追加条目请求。 我的问题是节点首先如何知道
读了几次文档,但仍然无法理解“多数”和“线性化”行为的差异 read concerns : "majority" The query returns the instance’s most recen
我在 a similar Stack Overflow thread 上找到了这个主题. 在 C++ 中,当你创建一个数组 int[i][j] 时,你会得到行的主要顺序,因此按行迭代将为你提供包含更多
为什么这个装饰器策略被认为是不好的? (..或者是!?) class User(object): def __init__(self): self.thing = 5
我是一名优秀的程序员,十分优秀!