鱼C论坛

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

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

[复制链接]
 楼主| 发表于 2020-1-12 21:07:51 | 显示全部楼层
nianyi 发表于 2020-1-12 21:05
a=list(input())
b=[]
for i in a:

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

使用道具 举报

发表于 2020-1-12 21:12:59 | 显示全部楼层
x= input("请输入一组数字:")
list1 = x.split(",")
n= len(list1)
count = 0
for m in range(0, n):
    for i in range(m+1, n):
        if list1[m] > list1[i]:
            count = count + 1
print(count)

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-1-12 21:15:16 | 显示全部楼层


说个数量级,也好改进自行测试下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-12 21:16:43 | 显示全部楼层
凌九霄 发表于 2020-1-12 21:15
说个数量级,也好改进自行测试下

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

使用道具 举报

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

使用道具 举报

发表于 2020-1-12 21:41:58 | 显示全部楼层
本帖最后由 凌九霄 于 2020-1-12 21:46 编辑
zltzlt 发表于 2020-1-12 21:16
输入长度超过 10000 的数组超时

改了个版本,应该快很多了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-12 21:45:34 | 显示全部楼层
凌九霄 发表于 2020-1-12 21:41
https://fishc.com.cn/forum.php?mod=redirect&goto=findpost&ptid=153848&pid=4275578

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

使用道具 举报

发表于 2020-1-12 21:51:02 | 显示全部楼层
def func304(l):
    res = 0
    while l:
        s = l.index(max(l))
        e = l.index(l[-1])
        res += (e - s)
        l.pop(s)
    return res

评分

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

查看全部评分

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

使用道具 举报

 楼主| 发表于 2020-1-12 21:53:20 | 显示全部楼层

解答错误

输入:[4,4,2]
输出:3
预期结果:2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-12 21:55:41 | 显示全部楼层
zltzlt 发表于 2020-1-12 21:53
解答错误

输入:[4,4,2]

想错了,还有重复数字
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-12 21:59:50 | 显示全部楼层

看了下,10000的数量我测试不到3s,但100000跑了4分多,大部分时间耗在生成器上,如何能减少排序是关键
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-12 22:08:52 | 显示全部楼层

对于[2,4,1,1,5],要求不计算重复的逆序对,该怎么弄
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-12 22:20:53 | 显示全部楼层
fan1993423 发表于 2020-1-12 22:08
对于[2,4,1,1,5],要求不计算重复的逆序对,该怎么弄

不重复的逆序对?。。那你得先给个定义啊,什么叫做重复的,
。。比如[5,5,1,1,5,1,5,1]这种应该算有几个逆序对?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-12 23:00:40 | 显示全部楼层
Croper 发表于 2020-1-12 22:20
不重复的逆序对?。。那你得先给个定义啊,什么叫做重复的,
。。比如[5,5,1,1,5,1,5,1]这种应该算有几 ...

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

使用道具 举报

发表于 2020-1-12 23:24:59 | 显示全部楼层
本帖最后由 Croper 于 2020-1-12 23:28 编辑

def func304(l:list):
    l2=[]
    map={}
    for i in l:
        exist=False
        p,q=0,len(l2)
        while (p<q):
            n=(p+q)//2
            if (i==l2[n]):
                exist=True
                map[i]=n
                break
            if (l2[n]<i):
                q=n
            else:
                p=n+1
        if (not exist):
            l2.insert(p,i)
            map[i]=p
    ret=0
    for n in map.values():
        ret+=n
    return ret
插入以第一个为准,计算以最后一个为准

评分

参与人数 1荣誉 +3 鱼币 +3 贡献 +3 收起 理由
fan1993423 + 3 + 3 + 3 厉害

查看全部评分

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

使用道具 举报

发表于 2020-1-12 23:37:21 | 显示全部楼层
本帖最后由 阴阳神万物主 于 2020-1-13 00:24 编辑
zltzlt 发表于 2020-1-12 20:44
双重 for 循环,超时

看了看别人的出错数据,感觉这回稳
def solve2(lst:'list of int')->int:
    res = 0
    temp = sorted(lst)
    for each in lst:
        if each in temp:
            res += temp.index(each)
            temp.remove(each)
    return res
if __name__ == '__main__':
    print('示例1 输出:',solve2([2,4,1,3,5]))
    print('示例2 输出:',solve2([1,2,3,4]))

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-1-12 23:46:34 | 显示全部楼层
本帖最后由 阴阳神万物主 于 2020-1-13 00:25 编辑


我这个也行点击查看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-12 23:55:22 | 显示全部楼层


输入[2,4,2],req设为False后结果是0对,预期结果是1对
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-12 23:56:31 | 显示全部楼层
Croper 发表于 2020-1-12 23:55
输入[2,4,2],req设为False后结果是0对,预期结果是1对

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

使用道具 举报

发表于 2020-1-13 00:01:44 | 显示全部楼层
Croper 发表于 2020-1-12 23:55
输入[2,4,2],req设为False后结果是0对,预期结果是1对

这样还有不对的吗,我这小脑瓜还是太嫩了
def solve2(lst:'list of int',rep=False)->int:
    res = 0
    temp = sorted(lst) if rep else sorted(set(lst))
    for each in lst:
        if each in temp[1:]:
            res += temp.index(each)
            temp.remove(each)
    return res
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-26 15:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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