鱼C论坛

 找回密码
 立即注册
楼主: zltzlt

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

[复制链接]
发表于 2020-4-17 21:48:54 | 显示全部楼层
fan1993423 发表于 2020-4-17 21:26
我这个如果运气好,也许第一个i就能出答案哦,另外版主能不能314,349测一下,我最近想出来的

是有可能第一个出答案,但排序的时候就把效率给赔进去了……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-17 22:08:21 | 显示全部楼层
from collections import Counter
def func378(arr):
    temp = Counter(arr)
    temp_set = set(arr)
    n = 0
    for number in temp_set:
        if number+1 in temp_set:
            n = max(n,temp[number]+temp[number+1])
    return n

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-4-17 22:21:45 | 显示全部楼层
kinkon 发表于 2020-4-17 21:40
按数量排序有可能会出错,例如,[1,2,2,3,2,6,2,2,7,7,7,7,7]

好像是哈,我给忽略还有这种可能性。已改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-18 00:06:53 | 显示全部楼层
target_list = eval(input("Fill in the array:"))
element = {}
target_element = []
adding_result = []
result = []
for each_element in target_list: # 统计各元素出现的次数
    element[each_element] = element.get(each_element,0) + 1
keys = sorted(list(element.keys()))
for i in keys:
    if i+1 in keys:
        target_element.append(i)
for j in target_element:
    adding_result.append(element[j]+element[j+1])
for index in range(len(adding_result)):
    if adding_result[index] == max(adding_result):
        break

for x in range(element[target_element[index]]):
    result.append(target_element[index])
for y in range(element[target_element[index]+1]):
    result.append(target_element[index]+1)
print(len(result))

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-4-18 00:50:16 | 显示全部楼层
本帖最后由 斐波纳税 于 2020-4-18 02:09 编辑
def fun378(lst):
    count = 0
    for eachone in lst:
        if lst.count(eachone) + lst.count(eachone+1) > count:
            count = lst.count(eachone) + lst.count(eachone+1)
    return count

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-4-18 04:31:45 | 显示全部楼层
from collections import Counter
def f378(nums):
    n,m,s = Counter(nums),0,sorted(set(nums)) 
    for i in range(1,len(s)):
        if s[i]-s[i-1]==1:
            m = max(m, n[s[i]] + n[s[i-1]])
    return m

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-4-18 09:17:11 | 显示全部楼层
@zltzlt 336题也重新完成了,麻烦楼主重新测试下,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-18 13:31:16 | 显示全部楼层
kinkon 发表于 2020-4-17 18:47
试试看能不能通过,速度应该是很慢的

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2020-4-18 13:32:40 | 显示全部楼层
本帖最后由 zltzlt 于 2020-4-18 13:34 编辑


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

使用道具 举报

发表于 2020-4-18 13:33:54 | 显示全部楼层

子序列,应该不一定是连续的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-18 13:34:27 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-18 13:55:50 | 显示全部楼层
新人宝宝来看大神
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-18 14:32:06 | 显示全部楼层
[3, 2, 2, 2, 3] 这个算[1, 3, 2, 2, 5, 2, 3, 7]的子序列,,子序列不是连续的吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-18 14:42:40 | 显示全部楼层
jkluoling1992 发表于 2020-4-18 14:32
[3, 2, 2, 2, 3] 这个算[1, 3, 2, 2, 5, 2, 3, 7]的子序列,,子序列不是连续的吗?

字串才是连续的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-18 16:18:51 | 显示全部楼层

不明白,,这里是看数组的子数组,或者子列表,为啥要提字符串?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-18 16:39:23 | 显示全部楼层
jkluoling1992 发表于 2020-4-18 16:18
不明白,,这里是看数组的子数组,或者子列表,为啥要提字符串?

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

使用道具 举报

发表于 2020-4-18 17:00:10 | 显示全部楼层

一般出题都是连续子序列,第一次看见不是连续的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-18 17:12:40 | 显示全部楼层
def f(list1):
    count = 0
    list2 = list(set(list1))
    for n in range(len(list2)-1):
        if list2[n]-list2[n+1] == -1:
            c = list1.count(list2[n]) + list1.count(list2[n+1])
            if c>count:
                count = c
    return count        

评分

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

查看全部评分

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-15 11:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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