鱼C论坛

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

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

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

朋友,为啥用你的代码报错啊,显示list未被定义..
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

这个注释只有LEETCODE才能用,用其他的解释器就会报错
小甲鱼最新课程 -> https://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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-26 23:09:24 | 显示全部楼层
  1. def fun359(nums):
  2.     n = len(nums)
  3.     repeat = 0
  4.     for i in range(n):
  5.         while nums[i] != i + 1:
  6.             if nums[nums[i] - 1] == nums[i]:
  7.                 repeat = nums[i]
  8.                 break
  9.             else:
  10.                 nums[nums[i] - 1],nums[i] = nums[i],nums[nums[i] - 1]
  11.     miss_nums = (1 + n) * n // 2 + repeat - sum(nums)
  12.     return [repeat,miss_nums]
复制代码



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

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

试试遍历列表找目标元素:
  1. def func359(nums:list) -> list:
  2.     list1 = []
  3.     for i in range(len(nums)):
  4.         if i >= 1:
  5.             if nums[i] == nums[i-1]:
  6.                 list1.append(nums[i])
  7.                 list1.append(nums[i+1]-1)
  8.                 break
  9.     return list1
复制代码

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-27 09:12:12 | 显示全部楼层
本帖最后由 tain 于 2020-3-27 09:15 编辑
  1. def findnum(*num):
  2.       n = 1
  3.       list1 = []
  4.       for num1 in num:
  5.             if num1 - n == 0:
  6.                   n += 1
  7.             else:
  8.                   list1.append(num1)
  9.                   list1.append(n)
  10.                   break
  11.       print(list1)
复制代码

评分

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

查看全部评分

小甲鱼最新课程 -> https://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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

输入的数据是有序的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

  9.     return result

  10. print(test359([1,2,3,4,5,5,7]))
复制代码

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

输入 [1, 1] 出错
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

输入 [1, 2, 2, 4] 结果有误
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

248 ms
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-27 18:04:06 | 显示全部楼层
小甲鱼最新课程 -> https://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
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-27 18:30:15 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

我默认是输入的numpy.array,简单改了一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

输入 [1, 2, 2, 4] 应该返回 [2, 3],你却返回了 [2, 2]
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

248 ms
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-9 20:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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