鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: zltzlt

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

[复制链接]
发表于 2020-1-15 11:03:30 | 显示全部楼层
  1. solve = lambda nums1,nums2:[x for x in sorted(set(nums1+nums2)) if x in nums1 and x in nums2]
复制代码
不晓得超时否。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-15 11:05:41 | 显示全部楼层

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

使用道具 举报

发表于 2020-1-15 11:07:05 | 显示全部楼层
本帖最后由 阴阳神万物主 于 2020-1-15 11:09 编辑


哦豁,那就没辙咯,再想就会和楼上各位的一摸一样咯。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-15 11:14:26 | 显示全部楼层
  1. def comp(arr1, arr2):
  2.     list1 = list(set(arr1))
  3.     list1.sort()
  4.     list2 = list(set(arr2))
  5.     list2.sort()
  6.     res = []
  7.     for each in list1:
  8.         if each in list2:
  9.             res.append(each)
  10.     return res
复制代码

评分

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

查看全部评分

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

使用道具 举报

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

使用道具 举报

发表于 2020-1-15 11:25:07 | 显示全部楼层
本帖最后由 TJBEST 于 2020-1-15 16:39 编辑

写了两个 确实python自带的函数效率高啊
(1)Python自带的
  1. def fun305_simple(nums1,nums2):
  2.     set1 = set(nums1)
  3.     set2 = set(nums2)
  4.     return sorted(set1 & set2)
复制代码

(2)自己写的,比较慢 应该能更快一些
  1. def fun305_new(nums1,nums2):
  2.     def niuBi(arr1,arr2):
  3.         temp = arr1[0]
  4.         if temp < arr2[0]:
  5.             pass
  6.         elif temp > arr2[len(arr2) - 1]:
  7.             arr2.clear()
  8.             pass
  9.         elif temp == arr2[len(arr2) - 1]:
  10.             arr2.clear()
  11.             res.append(temp)
  12.         else:
  13.             lf = 0
  14.             rt = len(arr2) - 1
  15.             while True:
  16.                 index = (lf + rt)//2
  17.                 if arr2[index] > temp:
  18.                     rt = index
  19.                 else:
  20.                     if arr2[index + 1] > temp:
  21.                         if arr2[index] == temp:
  22.                             res.append(temp)
  23.                         else:
  24.                             pass
  25.                         lend = arr2[(index+1):len(arr2)]
  26.                         arr2.clear()
  27.                         arr2.extend(lend)
  28.                         break
  29.                     else:
  30.                         lf = index
  31.                        
  32.     sorted_nums1 = sorted(nums1)
  33.     sorted_nums2 = sorted(nums2)
  34.     res = []
  35.     while sorted_nums1 and sorted_nums2:
  36.         try:
  37.             niuBi(sorted_nums1,sorted_nums2)
  38.             niuBi(sorted_nums2,sorted_nums1)
  39.         except Exception:
  40.             pass
  41.     return res
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-1-15 13:29:54 | 显示全部楼层
  1. # 代码重样率太高了,不搞特殊全一样了
  2. def func305(n1, n2):
  3.     n1 = set(n1)
  4.     n2 = set(n2)
  5.     if len(n1) > len(n2):
  6.         n1 ,n2 = n2, n1
  7.     res = list(filter(lambda x:x in n2, n1))
  8.     res.sort()
  9.     return res
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-1-15 14:21:32 | 显示全部楼层
def solve3(nums1,nums2):
        result = set(nums1) & set(nums2)
        return sorted(list(result))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-15 14:39:20 | 显示全部楼层
  1. def fun():
  2.     nums1 = [4,7,9,7,6,7]
  3.     nums2 = [5,0,0,6,1,6,2,2,4]
  4.     lista = list(set(nums1)&set(nums2))
  5.     lista.sort(reverse=False)
  6.     return lista

  7. if __name__ == '__main__':
  8.     f = fun()
  9.     print(f)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-15 15:54:47 | 显示全部楼层
  1. def f305(s1,s2):
  2.     tmp=[]
  3.     for i in s1:
  4.         if i in s2:
  5.             tmp.append(i)
  6.     res=list(set(tmp))
  7.     res.sort()
  8.     return res
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-1-15 15:57:04 | 显示全部楼层
def abc(nums1, nums2):
    set1 = set(nums1)
    set2 = set(nums2)
    return sorted(list(set1.intersection(set2)))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-15 16:57:27 | 显示全部楼层
  1. sorted(list(set(nums1) & set(nums2)))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-15 18:13:26 | 显示全部楼层
  1. #! usr/bin/env python
  2. #! -*- coding:utf-8 -*-

  3. nums1 = [4, 7, 9, 7, 6, 7]
  4. nums2 = [5, 0, 0, 6, 1, 6, 2, 2, 4]

  5. set_nums1 = set(nums1)
  6. set_nums2 = set(nums2)

  7. result = list()

  8. for each in set_nums1:
  9.     if each in set_nums2:
  10.         result.append(each)

  11. result = sorted(result)
  12. print(result)
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-1-15 18:18:17 | 显示全部楼层
采用双指针吧,进行数组预处理一下,速度可以到O(n)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2020-1-18 13:29:14 | 显示全部楼层
  1. def solve(A,B):
  2.     list1 = []
  3.     A,B = list(set(A)),list(set(B))
  4.     if len(A)<=len(B):
  5.         for i in range(len(A)):
  6.             if A[i] in B:
  7.                 list1.append(A[i])
  8.     else:
  9.         for i in range(len(B)):
  10.             if B[i] in A:
  11.                 list1.append(B[i])   
  12.     return sorted(list1)  
  13. if __name__ == "__main__":
  14.     print('示例一:',solve([1,2,2,1],[2,2]))
  15.     print('示例二:',solve([1,2],[2]))
复制代码

增加代码长度,换取效率
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-21 19:30:32 | 显示全部楼层
  1. def f305(nums1:list,nums2:list)->list:
  2.     return sorted([i for i in set(nums1) if i in set(nums2)])

  3. print(f305([1,2,2,1],[2,2]))
  4. print(f305([1,2],[2]))
  5. print(f305([4,7,9,7,6,7], [5,0,0,6,1,6,2,2,4]))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 12:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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