本文共 807 字,大约阅读时间需要 2 分钟。
题目:
解答:
题目很简单,看看我为什么错这么多次吧。
https://oj.leetcode.com/problems/powx-n/submissions/
第一次:
Last executed input:0.00001, 2147483647
超时,没有考虑结果近似等于0的情况,添加代码:
if (sum < 1e-16) return 0;第二次:
Last executed input:1.00000, 2147483647
好吧,没有考虑x == 1 的情况。添加代码:
if (x == 1) return 1;第三次:
Input:-13.62608, 3
Output:0.00000
Expected:-2529.95504
直接出错了,竟然忘了考虑
出错的地方在第一次添加的代码中,应该取sum的绝对值接近于0,而不是仅仅判断小于一个极小值
继续更改
if (abs(sum) < 1e-16) return 0;第四次: Last executed input:-1.00000, 2147483647
超时,判断x == 1时返回,同时应该判断 x == -1
添加代码:
if (abs(x) == 1) return 1;第五次:
Input: | -1.00000, 2147483647 |
Output: | 1.00000 |
Expected: | -1.00000 |
更改代码:
if (x == 1) return x; if (x == -1) { if (n % 2 == 0) return 1; else return -1; }第六次
通过
一个简单的题,竟然提交了这么多次,犯了很多简单的错误,引以为戒。
写代码的时候,没有思考,改一个bug,提交一次,造成了这么多的错误。
转载地址:http://hutsi.baihongyu.com/