算法题是这个:
https://leetcode.com/problems/median-of-two-sorted-arrays/description/
There are two sorted arrays nums1 and nums2 of size m and n respectively.
Find the median of the two sorted arrays.
我写的代码在这里:
https://gist.github.com/BryanJin/409a6ef9a52d544621b6e0ca430b3762
之前在 leetcode 上死活不通过,自己 debug 了半天没发现问题,结果是 Python 版本错了。
测试输入: [1, 2] [3, 4]
Python2 的运行结果是 2
Python3 的运行结果是 2.5
为啥会有这种神奇的现象
1
NotNil1 2018-08-06 09:57:39 +08:00
因为 2 和 3 是两个语言
|
2
mccally 2018-08-06 09:58:18 +08:00 2
变量都整数,除法被除数也不是浮点数。
python2 默认是整型运算,python3 是浮点运算。 |
3
cxxcoding 2018-08-06 09:59:22 +08:00 1
你在 py2 py3 里分别执行 1/2 看看结果
看我 github |
4
cosven 2018-08-06 10:08:37 +08:00 2
这是 3 和 2 典型的不兼容地方之一
要想得到 int 可以使用 `a // b` 来进行除法 为什么会有这个改动: https://www.python.org/dev/peps/pep-0238/#abstract 2 和 3 更多不兼容的地方: http://python-future.org/compatible_idioms.html#division |
5
melonrice 2018-08-06 10:51:01 +08:00
不应该说居然,应该说果然...
|
6
1313213 2018-08-06 11:11:17 +08:00
正常,py2 和 py3 的差别太大了
|
7
mooncakejs 2018-08-06 11:15:42 +08:00 via iPhone 1
每次碰到这种问题 默默的在心里骂 Python 一百遍
|
8
ArthurMarcel 2018-08-06 12:10:48 +08:00 1
本来就不一样啊....3 和 2 很多地方实际上不兼容,甚至是直接舍弃了很多 2 的实现方式。想要结果一直可以 math.floor 或者'a//b'。建议多看下 3 和 2 细节上的区别(不踩坑是不可能的)~
|
10
DamonLin 2018-08-07 23:12:52 +08:00
2 和 3 差别很大
|