鱼C论坛

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

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

[复制链接]
发表于 2020-3-26 21:22:17 | 显示全部楼层

朋友,为啥用你的代码报错啊,显示list未被定义..
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-26 21:28:54 | 显示全部楼层
还是这个小幺 发表于 2020-3-26 21:22
朋友,为啥用你的代码报错啊,显示list未被定义..

这个注释只有LEETCODE才能用,用其他的解释器就会报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-26 22:41:44 From FishC Mobile | 显示全部楼层
nums=[1,2,3,4,5,6,7,7,9]
n=len(nums)
l=[]
active=0
for i in range(n):
    if nums[i] != (i+1):
        l.extend([nums[i],(i+1)])
        active=1
        break
    if active==1:
        break
        
print(l)
   

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-3-26 23:09:24 | 显示全部楼层
def fun359(nums):
    n = len(nums)
    repeat = 0
    for i in range(n):
        while nums[i] != i + 1:
            if nums[nums[i] - 1] == nums[i]:
                repeat = nums[i]
                break
            else:
                nums[nums[i] - 1],nums[i] = nums[i],nums[nums[i] - 1]
    miss_nums = (1 + n) * n // 2 + repeat - sum(nums)
    return [repeat,miss_nums]


我觉得,不排序可以有另一种解法。
就比如,nums = [1,2,3,2,4,5,6],这样输出的是[2,7]因为是按顺序写的数组,所以后面加上7。楼主,我理解的对吗?

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-3-27 00:22:23 | 显示全部楼层
def fun(num):
    lis=[]
    for i in range(1,len(num)):
        if i not in  num:
            lis.append(i)
        else:
            if  num.count(i)==2:
                lis.append(i)
    return  lis

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-3-27 08:38:29 | 显示全部楼层
本帖最后由 yexing 于 2020-3-27 10:36 编辑

试试遍历列表找目标元素:
def func359(nums:list) -> list:
    list1 = []
    for i in range(len(nums)):
        if i >= 1:
            if nums[i] == nums[i-1]:
                list1.append(nums[i])
                list1.append(nums[i+1]-1)
                break
    return list1

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-3-27 09:12:12 | 显示全部楼层
本帖最后由 tain 于 2020-3-27 09:15 编辑
def findnum(*num):
      n = 1
      list1 = []
      for num1 in num:
            if num1 - n == 0:
                  n += 1
            else:
                  list1.append(num1)
                  list1.append(n)
                  break
      print(list1)

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-3-27 12:52:23 From FishC Mobile | 显示全部楼层
lst=[1,2,3,3,5]
def findd(*args):
     lst1=[0,0]
    for i ⅰn range(1,len(lst)+1):
          if lst.count(i)==2:
                lst1[0]=i
           if lst.count(i)==0:
                 lst1[1]=i
     return lst1
ret=fⅰndd(lst)
prⅰnt(ret)

评分

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

查看全部评分

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

使用道具 举报

 楼主| 发表于 2020-3-27 17:55:38 | 显示全部楼层
TJBEST 发表于 2020-3-26 17:50
版主 输入 可能是 【1,1,2,4】还是片【1,2,1,4】,排好序了?

输入的数据是有序的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-27 17:55:52 | 显示全部楼层
def test359(nums:list):
    n=len(nums)
    result=[]
    for i in range(1,n+1):
        if i not in nums:
            result.append(i)
        if nums.count(i)==2:
            result.append(i)

    return result

print(test359([1,2,3,4,5,5,7]))

评分

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

查看全部评分

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

使用道具 举报

 楼主| 发表于 2020-3-27 18:02:37 | 显示全部楼层
fan1993423 发表于 2020-3-26 13:50
麻烦版主把357,358题测一下吧

输入 [1, 1] 出错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-27 18:03:12 | 显示全部楼层

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

使用道具 举报

 楼主| 发表于 2020-3-27 18:03:36 | 显示全部楼层
March2615 发表于 2020-3-26 14:08
再来一种更容易想到的

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2020-3-27 18:04:50 | 显示全部楼层
旅途Z 发表于 2020-3-26 16:23
def find_x_y(nums):
    lens = len(nums)
    x = 0

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

使用道具 举报

发表于 2020-3-27 18:28:56 | 显示全部楼层
已改
def fun359(lst):
    result=[]
    lst.sort()
    for i in lst:
        if lst.count(i)==2:
            result.append(i)
            break
    k=set(range(1,len(lst)+1))-set(lst)
    result.append(k.pop())
    return result

评分

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

查看全部评分

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

使用道具 举报

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

使用道具 举报

发表于 2020-3-27 19:01:58 | 显示全部楼层
zltzlt 发表于 2020-3-27 18:03
输入 [1, 2, 2, 4] 结果有误

我默认是输入的numpy.array,简单改了一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-28 13:19:47 | 显示全部楼层
BngThea 发表于 2020-3-27 19:01
我默认是输入的numpy.array,简单改了一下

输入 [1, 2, 2, 4] 应该返回 [2, 3],你却返回了 [2, 2]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-28 13:23:04 | 显示全部楼层
TJBEST 发表于 2020-3-26 17:45
不知道sum的速度如何,如果sum比遍历更快,此法还是可以的。
结果应该不错,但是速度未知,纯数学思想没用 ...

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-26 17:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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