鱼C论坛

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

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

[复制链接]
发表于 2019-10-31 13:30:10 | 显示全部楼层
不重叠到底是什么不重叠有歧义啊
def func(list1):
    list1.sort()
    counter = 0
    for each in list1:
        if each < 0:
            counter += 1
        else:
            break
    if list1[0] < 0:
        if list1[-1] >= 0:
            result = sum(set(list1[counter:])) - sum(set(list1[0:counter]))
        else:
            count = list1.count(list1[-1])
            while count > 1:
                list1.remove(list1[-1])
                count -= 1
            result = list1[-1] - sum(set(list1[:len(list1) - 1]))
    else:
        count = list1.count(list1[0])
        while count > 1:
            list1.remove(list1[0])
            count -= 1
        result = sum(set(list1[1:])) - list1[0]
    return result

评分

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

查看全部评分

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

使用道具 举报

发表于 2019-10-31 14:54:08 | 显示全部楼层
阴阳神万物主 发表于 2019-10-31 10:25
交集为空,就代表没有重样的部分;就是两集合的元素互不相同;其中一个集合中的任意元素,在另一个集合中 ...

可目标列表可能有重复值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-31 15:26:25 | 显示全部楼层
panheng 发表于 2019-10-31 14:54
可目标列表可能有重复值

这就是我看不懂题目示例的部分,当有重复值的时候,你说要不要纳入计算范围呢?
如果纳入重复值,则会与 示例1 出现矛盾,[1,1,2]的和减去[-3]的和,所得为 7,大于示例输出的 6 ,当成集合看待,才会出现那种情况,即:将输入的列表去重。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-31 15:52:01 | 显示全部楼层
阴阳神万物主 发表于 2019-10-31 15:26
这就是我看不懂题目示例的部分,当有重复值的时候,你说要不要纳入计算范围呢?
如果纳入重复值,则会与 ...


不重叠的意思就是同一个元素不能同时出现在A、B,可以理解将原列表分出两块(每块连续)。

而不是同一个值不能出现在两边。

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

使用道具 举报

发表于 2019-10-31 16:10:16 | 显示全部楼层
panheng 发表于 2019-10-31 15:52
不重叠的意思就是同一个元素不能同时出现在A、B,可以理解将原列表分出两块(每块连续)。

而不是同 ...

为啥我读题读出的是:A 与 B 不重叠
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-31 17:51:38 | 显示全部楼层
我来一个不用 sort() 的
def f266(arr):
    if len(arr) < 2:
        return None

    res = negative = positive = 0
    set_arr = set(arr)
    for num in set_arr:
        if num < 0:
            negative += num
        else:
            positive += num

    if positive and negative:
        res = positive - negative
    elif positive and len(set_arr) > 1:
        res = positive - 2 * min(set_arr)
    elif negative and len(set_arr) > 1:
        res = 2 * max(set_arr) - negative
    return res

评分

参与人数 1贡献 +1 收起 理由
zltzlt + 1

查看全部评分

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

使用道具 举报

发表于 2019-10-31 19:21:21 | 显示全部楼层
本帖最后由 零0℃度 于 2019-10-31 19:25 编辑
def max_sum(lists):
    max_sum = lists[0]
    pre_sum = 0
    for i in lists:
        if pre_sum < 0:
            pre_sum = i
        else:
            pre_sum += i
        if pre_sum > max_sum:
            max_sum = pre_sum
    return max_sum


def min_sum(lists):
    min_sum = lists[0]
    pre_sum = 0
    for i in lists:
        if pre_sum >  i:
            pre_sum = i
        else:
            pre_sum += i
        if pre_sum < min_sum:
            min_sum = pre_sum
    return min_sum


def f(list):
    return max_sum(lists) - min_sum(lists)

评分

参与人数 1贡献 +1 收起 理由
zltzlt + 1

查看全部评分

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

使用道具 举报

发表于 2019-10-31 19:34:14 | 显示全部楼层
本帖最后由 __mrsq__ 于 2019-10-31 19:36 编辑
panheng 发表于 2019-10-31 15:52
不重叠的意思就是同一个元素不能同时出现在A、B,可以理解将原列表分出两块(每块连续)。

而不是同 ...


你的意思是不是:不重叠指原数组中的同一个index的元素不能出现在两个子数组里,并且子数组是连续的
比如
[2,1,2]得分成[2] [1]或者[1][2]或者[2,1] [2]或者[2] [1,2] 最大差值是1
[-4,1,2,-4,3]可以分成[-4,1,2,-4] [3] 最大差值是8
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-31 22:07:55 | 显示全部楼层
__mrsq__ 发表于 2019-10-31 19:34
你的意思是不是:不重叠指原数组中的同一个index的元素不能出现在两个子数组里,并且子数组是连续的
...

我就是这样理解的,不重叠 不是 不重复
不知道题主是不是这个意思。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-1 13:59:24 | 显示全部楼层
def splist(a):
    pos=[]
    neg=[]
    for i in a:
        if i >0:
            pos.append(i)
        elif i<0:
            neg.append(i)
    for i in a :
        if i==0:
            if len(pos)>len(neg):
                neg.append(i)
            else:
                pos.append(i)
    if pos!=[] and neg!=[]:
        return sum(set(pos))-sum(set(neg))
    elif pos==[]:
        neg.sort()
        s=neg[-1]
        s1=set(neg)
        s1.remove(s)
        return (s-sum(s1))
    elif neg==[]:
        pos.sort()
        s=pos[0]
        s1=set(pos)
        s1.remove(s)
        return (sum(s1)-s)

评分

参与人数 1贡献 +1 收起 理由
zltzlt + 1

查看全部评分

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

使用道具 举报

发表于 2019-11-1 20:02:13 | 显示全部楼层
阴阳神万物主 发表于 2019-10-30 21:36
就目前而言,我读题理解出的意思为:求给定全集的两个交集为空的子集,使得两个集合间元素总和的差值最大
...

子数组需要连续
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-1 20:03:02 | 显示全部楼层
本帖最后由 永恒的蓝色梦想 于 2019-11-1 20:35 编辑
def function(nums):
    length=len(nums)
    return(
        max(
            (
                abs(
                    sum(nums[start_1:end_1])
                    -sum(nums[start_2:end_2])
                )#abs end
                for start_1 in range(length-1)
                for end_1 in range(start_1+1,length)
                for start_2 in range(end_1,length)
                for end_2 in range(start_2+1,length+1)
            )#<genexpr> end
        )#max end
    )#return end
忽然感觉重复切片很浪费,改了改:
def function(nums):
    length=len(nums)
    max=0
    for start_1 in range(length-2):
        for end_1 in range(start_1+1,length-1):
            A=sum(nums[start_1:end_1])
            for start_2 in range(end_1,length-1):
                for end_2 in range(start_2+1,length):
                    k=abs(A-nums[start_2:end_2])
                    if k>max:
                        max=k
    return max

评分

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

查看全部评分

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

使用道具 举报

 楼主| 发表于 2019-11-1 20:31:49 | 显示全部楼层
阴阳神万物主 发表于 2019-10-30 21:11
关于数组的部分有疑问,百度百科:数组 我记得在同一个数组中可以出现相同的元素,那么,示例1 中的 子数组 ...

子数组是连在一起的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-1 20:33:04 | 显示全部楼层
zltzlt 发表于 2019-11-1 20:31
子数组是连在一起的

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

使用道具 举报

 楼主| 发表于 2019-11-1 20:34:37 | 显示全部楼层
阴阳神万物主 发表于 2019-10-31 10:36
你往题号小的找,题号小的难度相对较低

并不是这样哦,题目难度是随机的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-1 20:35:22 | 显示全部楼层
zltzlt 发表于 2019-11-1 20:34
并不是这样哦,题目难度是随机的

诶,原来是这样吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-1 20:35:57 | 显示全部楼层

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2019-11-1 20:37:10 | 显示全部楼层

解答错误

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

使用道具 举报

 楼主| 发表于 2019-11-1 20:38:31 | 显示全部楼层
Unicorn# 发表于 2019-10-30 21:10
终极蛇皮之上帝视角之小甲鱼听了想打人之时间宝石之四重循环暴力解法(手动滑稽)

输入以下数据超时:
[-28,-75,100,-26,-80,-26,-47,63,59,-84,-54,48,64,-34,-48,80,38,-76,25,17,-59,-10,-67,80,80,-63,-66,5,97,-34,-28,60,59,-64,-9,-45,-15,27,-2,78,-61,-54,-44,-15,66,79,53,-70,11,36,-3,-54,27,-16,81,88,77,-5,-67,82,19,-96,-50,-17,-33,0,58,78,-34,95,75,53,66,45,51,22,-74,-32,-40,-60,92,21,4,-82,-38,-75,19,-90,67,10,52,100,-66,-39,91,-5,39,-59,74,9,-37,-88,60,40,-2,43,-63,-33,35,49,-53,32,20,-100,42,69,49,36,42,-26,-25,70,27,-71,-28,94,-30,-61,12,21,-77,-35,69,2,-90,59,-13,-37,56,7,90,-41,-27,-49,-59,40,39,-80,17,-55,-54,33,87,55,-51,-32,8,52,2,59,67,-1,31,42,87,94,-65,53,-10,31,58,81,34,-30,2,51,-37,73,48,71,-78,-28,-62,41,68,25,-3,57,-58,11,-92,33,85,47,-49,79,-7,-53,8,-41,-66,65,47,11,0,-92,18,41,-91,-26,-82,-78,13,-1,-67,-56,34,-20,2,-54,-58,-77,90,90,-67,29,16,24,-20,49,-97,67,-9,18,10,62,88,-31,-24,36,6,53,-54,-99,-94,-95,26,79,47,34,88,94,-95,68,-88,-80,41,1,-34,60,-95,78,-81,83,-64,-5,-25,-87,-81,-30,75,36,-14,-19,-98,46,-94,-36,-38,51,-48,-91,-39,-50,-33,98,49,81,63,-59,-37,32,4,-54,-23,-38,88,89,-16,-30,90,63,-52,-20,74,82,-34,87,-86,21,-41,93,82,-96,20,-75,96,52,-72,87,45,83,63,-24,-86,-88,85,12,-8,77,-56,-51,-73,43,-34,35,-10,65,54,1,-60,100,36,8,-81,53,81,42,75,-44,83,55,-24,96,-31,-43,42,-37,-51,-33,40,15,-83,-92,-77,-35,-68,21,-64,-12,22,-71,-19,-13,-15,15,56,-8,79,-44,-9,-78,-11,-28,-13,42,38,-7,-48,-90,70,69,2,-47,56,-93,-16,51,44,-1,-93,64,-13,67,-72,95,80,1,68,-47,37,72,-29,-74,79,-60,97,12,-38,7,-75,26,90,99,46,-3,-5,74,9,-26,60,-55,85,-52,-15,-24,3,23,44,5,-55,72,54,97,53,49,-30,18,36,99,23,79,94,-15,-84,-35,86,8,16,1,-23,83,-47,-67,6,13,8,84,57,-80,67,38,-95,65,-46,-87,34,97,-29,-70,55,17,-92,87,-39,-82,74,5,38,-81,-9,41,66,49,-38,-42,88,-65,-83,45,-52,-34,54,-39,-50,-45,-62,35,-26,-74,20,-22,92,-67,51,77,42,58,40,-86,44,13,100,-62,52,-49,-72,-68,-13,47,57,21,63,-54,52,-8,31,-87,-34,-29,-7,45,-32,95,47,-31,-10,-15,9,-76,-69,-15,21,-26,79,-64,43,72,29,-90,6,-29,-15,-53,-40,-3,-7,-91,-80,0,-91,5,-72,55,-88,-31,-43,33,-17,-4,23,-89,26,-29,5,-26,-4,-28,22,-36,45,31,36,-1,-35,-45,22,-67,-85,22,80,-10,-38,-14,-93,-13,27,64,75,89,75,10,-23,-78,41,3,54,73,-73,-28,-61,-48,7,-8,-16,62,-74,50,38,-74,-23,22,3,66,22,-36,-59,17,-54,-45,80,-66,86,3,5,66,28,73,63,17,5,-58,-87,-15,-36,55,-34,-39,93,55,-74,-40,13,-70,89,-10,75,-24,86,76,15,28,-66,-55,8,25,24,98,-47,25,-29,-44,-54,-48,-80,89,98,27,-73,-44,35,-64,84,7,-39,-57,30,100,12,41,-17,-27,-25,7,78,-10,50,-41,-55,-34,21,88,27,21,32,58,-93,18,-55,61,-79,17,-27,82,-29,36,-22,-12,31,49,-1,24,-63,67,41,24,98,66,8,-2,100,-3,-44,55,75,-46,16,-34,-38,-87,-21,-27,39,18,23,-64,-99,43,74,11,-67,4,-96,-56,88,4,-45,27,-79,-39,-97,-14,44,12,-12,57,-81,-37,38,89,-75,-79,-42,-43,-18,-91,39,-23,-90,-20,-32,92,96,99,-11,-7,-17,-39,-23,45,58,-73,73,-14,60,61,-6,-67,-16,72,-91,-51,57,-99,-9,82,32,-39,-40,23,-78,-45,27,-65,100,91,-96,-1,-72,-9,-47,9,87,55,39,79,-42,-26,-3,48,22,-52,-71,-77,-30,12,38,84,-6,39,67,97,77,-82,75,-45,11,-81,-89,60,51,-48,-99,-31,-75,51,82,-31,-39,-77,98,88,66,-37,-3,-96,-83,-86,-27,80,-93,-55,44,-14,98,-86,-4,90,-51,-64,71,-91,-4,-4,-99,-57,-93,27,-15,-89,21,-77,9,39,-80,3,10,65,4,26,27,11,-63,2,-36,-81,4,-57,-93,-53,-92,-44,94,-63,90,56,40,-32,-28,-1,-36,-70,51,1,80,-9,100,-46,-69,-93,59,-82,-34,-58,-90,78,-61,34,33,-37,6,66,-49,92,98,-57,-79,-60,-4,91,95,-85,-83,-69,-82,4,-100,44,-67,92,-79,16,83,-70,84,57,90,-30,-98,-24,-48,100,17,-1,-52,-4,-28,39,-43,28,12,-14,-52,-64,-84,6,66,-98,-73,-72]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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