全部评论
不应该是not in d?
时间复杂度过大,这题相当于找长度为n的无序数组第n/2大的数,首先创建哈希表简历每个数和出现次数的映射,之后用优化快排找到第n/2的数,如果n为奇数且hash[n/2大的数]=奇数,则存在。偶数反之。时间复杂度最坏O(n+nlogn/2),是这题最优解。 你的解法时间复杂度最坏情况下O(3n+nlogn),而且sorted函数用在for循环中不知道是否每次都要重新计算复杂度。
很明显左右指针没有同时发生改变,又指针在判定前就发生了变化,左指针在判定后才发生变化。所以对左右指针的赋值需要放在if前
推荐一个小程序“IT面试题库” 找工作可能用上的哈。
扔到哈希然后双指针?
逻辑没问题那就是复杂度的问题 该方法复杂度为mlogm+n+m,m为有几种数,n为seq长度。当D用一个长度为1000的list代替时复杂度为n+1000(省去了排序)。当m>130时 mlogm+n+m大于n+1000。如果用例是随机生成的话,时间卡的比较严的话,应该是可以限制到50ac左右的....也不知道对不对
mark
n的范围才1000,为啥不直接n^2暴力做呢
直接先集合化?如果集合的数量是偶数的肯定不行,是奇数的对集合排序,中间的数就是要求的数?
这题能AC sp... 不是吧
什么时候面试的
🐎
除了变量写错和边界条件之外,应该没啥问题吧。测试例也都很和谐,也没用数值问题。。
mark
中间数定义没错吗?万一大于和小于中间数的个数不相等,就没有中间数了吗
mark,求解答
if x not in s: 这个s是什么啊
逻辑肯定没问题,应该是语言层面的问题,但我不了解py
m
没看出来哪里错了,提供一个on的思路,这题就是求中位数,中位数可以用迭代划分数组的方式得到,并且有一个策略能保证迭代划分的复杂度是on的,可以参考c++ stl里的get_kth_element函数
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
12-16 17:17
门头沟学院 产品经理 点赞 评论 收藏
分享
