LeetCode4.寻找两个正序数组的中位数(Python)

博客讲述了在Python 2.x和3.x中处理数组时遇到的问题,主要涉及到集合与列表的使用,以及中位数计算。作者最初使用集合去重导致数组长度变化,后改为列表extend和sort方法。在Python 2.x中整数除法的特性导致了结果不一致,升级到3.x版本后问题解决。作者反思了基础不扎实和对版本差异理解不足,并强调了学习官方文档的重要性。
摘要由CSDN通过智能技术生成

我先是想到用集合来解决这个问题

def find(nums1,nums2):
  def sumlist(nums1,nums2):
    nums1,nums2 = set(nums1)\
    ,set(nums2)
    numslist = list(nums1 | nums2)
    return numslist
  def odevity(numslist):
    n = len(numslist)
    mid = n // 2
    if n % 2 == 0:
      median = numslist[mid] + numslist[mid - 1]
      median /= 2
      return median
    else:
      median = numslist[mid]
      return median
  numslist = sumlist(nums1,nums2)
  median = odevity(numslist)
  if median == 0:
    return 0.0
  median = float(('%5f'%median))
  return median

结果我发现一旦数组里面出现重复的元素会被移出,导致奇偶发生改变,到2055个数据时候过不去了。

我开始重新思考

我想到了列表的extend也有相同的效果,然后在用sort,后面我写的与前面一样,除了归并数组的方式改变了,其余代码不改变。

def fund(nums1,nums2):
  def sumlist(nums1,nums2):
    nums1.extend(nums2)
    nums1.sort()
    numslist = nums1
    return numslist
  def odevity(numslist):
    n = len(numslist)
    mid = n // 2
    if n % 2 == 0:
      median = numslist[mid]\
      + numslist[mid - 1]
      median = median / 2
      return median
    else:
      median = numslist[mid]
      return float(median)
  numslist = sumlist(nums1,nums2)
  median = odevity(numslist)
  median = float(('%.5f'%median))
  return median

这个时候新的问题出现了,当我输入[1,2,3]和[4,5,6]

我的输出4.00000

系统的输出4.50000

我百思不得其解,在我经过一阵的调试,发现在偶数的median赋值时改变其类型为float就可以得到正确答案。

这个时候我又开始思考是为什么?

最后发现是版本问题,我使用的是python2.x,当我将python版本提升为3.x就可以不用改变类型,我猜测是官方在升级时对这个进行了改变。

比如python2.x里int类型/任何数返回的依旧是int类型

在python3.x里int类型/任何数返回的是float类型

总结

对python基础不够扎实

然后对python版本变化不够了解

平时应该多看看官方文档

收获

提升了思考问题能力

提升实践能力

‘心流状态’持续时间变得比过去更持久

 

1994171e00c7405889d91be8dd0f1672.jpg

6259d7e938444a37bb3fc3071462ab14.jpg 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值