鱼C论坛

 找回密码
 立即注册
查看: 2241|回复: 36

[已解决]Python:每日一题 305

[复制链接]
发表于 2020-1-15 08:00:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
今天的题目:


给定两个数组,求它们的交集。

说明:
1. 结果中的每个元素必须是唯一的。
2. 结果需要为升序

示例 1:

输入:nums1 = [1, 2, 2, 1], nums2 = [2, 2]
输出:[2]
示例 2:

输入:nums1 = [1, 2], nums2 = [2]
输出:[2]


欢迎大家一起答题!
最佳答案
2020-1-15 09:34:35
本帖最后由 kinkon 于 2020-1-15 09:37 编辑
  1. def pun305(n1,n2):return sorted(list(set(n1) & set(n2)))
复制代码

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-1-15 08:34:44 | 显示全部楼层
先占个位置
  1. def f305(n1, n2):
  2.     n3 = sorted(set([i&j for i in n1 for j in n2]))
  3.     for i in n3:
  4.         if i not in n2: del n3[i]
  5.     return n3

  6. if __name__ == '__main__':
  7.     print('示例1 输出:',f305([1, 2, 2, 1],[2, 2]))
  8.     print('示例2 输出:',f305([1, 2],[2]))
复制代码

评分

参与人数 1荣誉 +3 鱼币 +2 收起 理由
zltzlt + 3 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-15 08:37:30 | 显示全部楼层

解答错误

输入:nums1 = [4,7,9,7,6,7], nums2 = [5,0,0,6,1,6,2,2,4]
输出:[0,1,2,4,5,6]
预期结果:[4,6]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-15 09:08:55 | 显示全部楼层
zltzlt 发表于 2020-1-15 08:37
解答错误

输入:nums1 = [4,7,9,7,6,7], nums2 = [5,0,0,6,1,6,2,2,4]

一发上来就发现错误了,抱歉,重新改了
  1. def f305(n1, n2):   
  2.     n3 = sorted(set([i&j for i in n1 for j in n2]))   
  3.     n4 = []
  4.     for i in n3:
  5.         if i in n2 and i in n1:
  6.             n4.append(i)           
  7.     return n4

  8. if __name__ == '__main__':
  9.     print('示例1 输出:',f305([1, 2, 2, 1],[2, 2]))
  10.     print('示例2 输出:',f305([1, 2],[2]))
  11.     print('示例2 输出:',f305([1, 2, 3, 3, 6, 8],[2,4,3,6]))
复制代码

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
zltzlt + 5 + 5 输入大数据超时

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-15 09:09:00 | 显示全部楼层
  1. def func305(nums1,nums2):
  2.     return sorted([i for i in set(nums1) if i in nums2])

复制代码

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
zltzlt + 5 + 5

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-15 09:13:46 | 显示全部楼层

输入大数组超时
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-15 09:14:30 | 显示全部楼层
本帖最后由 凌九霄 于 2020-1-15 09:25 编辑
  1. def func305(l, n):
  2.     return sorted(list(set(l) & set(n)))
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-15 09:17:57 | 显示全部楼层
  1. def fun305(num1,num2):return sorted(list(set(num1).intersection(set(num2))))
复制代码

评分

参与人数 1荣誉 +8 鱼币 +8 收起 理由
zltzlt + 8 + 8 352 ms

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-15 09:20:45 | 显示全部楼层
本帖最后由 kinkon 于 2020-1-15 09:22 编辑
  1. 把5楼的代码换一下位置
  2. def f305(n1, n2):
  3.     n3 = []
  4.     for i in set(n2):
  5.         if i in set(n1):
  6.             n3.append(i)
  7.     return n3

  8. if __name__ == '__main__':
  9.     print('示例1 输出:',p305([1, 2, 2, 1],[2, 2]))
  10.     print('示例2 输出:',p305([1, 2],[2]))
  11.     print('示例2 输出:',p305([1, 2, 3, 3, 6, 8],[2,4,3,6]))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-15 09:25:22 | 显示全部楼层
zltzlt 发表于 2020-1-15 08:37
解答错误

输入:nums1 = [4,7,9,7,6,7], nums2 = [5,0,0,6,1,6,2,2,4]

好吧。。不让偷懒。。。
  1. def func305(nums1,nums2):
  2.     nums1.sort()
  3.     nums2.sort()
  4.     i=j=0
  5.     ret=[]
  6.     while i<len(nums1) and j<len(nums2):
  7.         a=b=False;
  8.         if (nums1[i]==nums2[j]):
  9.             a=b=True
  10.             ret.append(nums1[i])
  11.         elif (nums1[i]<nums2[j]):
  12.             a=True
  13.         elif (nums1[i]>nums2[j]):
  14.             b=True
  15.         if a:
  16.             while True:
  17.                 i+=1
  18.                 if i==len(nums1) or nums1[i-1]!=nums1[i]:break
  19.         if b:
  20.             while True:
  21.                 j+=1
  22.                 if j==len(nums2) or nums2[j-1]!=nums2[j]:break
  23.     return ret
复制代码

话说python的len时间复杂度是O(1)的还是O(n)的?

评分

参与人数 1荣誉 +7 鱼币 +7 收起 理由
zltzlt + 7 + 7 1029 ms

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-15 09:26:26 | 显示全部楼层
Croper 发表于 2020-1-15 09:25
好吧。。不让偷懒。。。

话说python的len时间复杂度是O(1)的还是O(n)的?

O(1)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-15 09:29:38 | 显示全部楼层
@zlzlt 我昨天发布的求助问题怎么不可见啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-15 09:30:22 | 显示全部楼层
fan1993423 发表于 2020-1-15 09:29
@zlzlt 我昨天发布的求助问题怎么不可见啊

正在审核中
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-15 09:31:48 | 显示全部楼层
  1. def fun305(nums1,nums2):
  2.     nums3 = set(nums1+nums2)
  3.     nums1 = set(nums1)
  4.     nums2 = set(nums2)
  5.     return sorted([i for i in nums3 if i in nums1 and i in nums2])
复制代码

评分

参与人数 1荣誉 +8 鱼币 +8 收起 理由
zltzlt + 8 + 8 402 ms

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-15 09:34:35 | 显示全部楼层    本楼为最佳答案   
本帖最后由 kinkon 于 2020-1-15 09:37 编辑
  1. def pun305(n1,n2):return sorted(list(set(n1) & set(n2)))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-15 09:36:32 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-15 09:38:25 | 显示全部楼层

少敲了个return,已经加了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-15 10:02:47 | 显示全部楼层
  1. def f305(nums1,nums2):
  2.     return sorted(list(set(nums1)&set(nums2)))
复制代码

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
zltzlt + 2 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-15 10:26:05 | 显示全部楼层
  1. def fun305(A,B):
  2.     return sorted(list(set(A) & set(B)))

  3. print(fun305([1,2,2,1],[2,2]))
  4. print(fun305([1,2],[2]))
  5. print(fun305([4,7,9,7,6,7],[5,0,0,6,1,6,2,2,4]))
复制代码

为什么很多人都写的很复杂?python自带的这些不就能完成么?难道是因为这种写法时间复杂度高吗?

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
zltzlt + 1 + 1

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-15 10:52:30 | 显示全部楼层
sunrise085 发表于 2020-1-15 10:26
为什么很多人都写的很复杂?python自带的这些不就能完成么?难道是因为这种写法时间复杂度高吗?

可能不太熟悉位运算
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 00:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表