[两种算法,我的机器上的结果相同,测试上的结果不同[关闭]

问题描述 投票:-2回答:1
我是代码新手,所以,如果有人让我高兴,那就太好了。任务:您有目标编号和许多其他编号。您需要找到相加的数字才能得到等于目标数字的总和。如果找到此数字,则在输出文件中键入“ 1”,否则键入“ 0”。所有数字都在diapason中0

我写了2种不同的算法,都可以正常工作。但是我有测试(没有代码源,它们在网站上,我找到了任务),第一个算法通过了速度测试的所有测试接受,但是第二个甚至无法通过第一个测试,出现错误“错误答案”。我想测试最快的版本。该算法可以:

    用数字打开文件。
  1. 将所有带有数字的字符串转换为数字。将所有数字写在一个切片中。
  2. 将目标从数组写入一个单独的变量。由于输入格式,目标=切片的第一个元素。
  3. 创建新切片。用<=目标的所有数字重写它。
  4. 按升序对切片排序(从golang进行内置排序)
  5. 求和:6.1取得当前的切片元素,并将其从目标中减去。结果数=第二项。6.2使用二进制数组解剖方法,我们在切片中搜索此数字。 (来自golanfg包的方法)6.3如果找到,将1写入输出文件并退出程序。6.4否则转到循环的新迭代并返回到点6.16.5如果周期结束并且我们还没有离开程序,我们假定没有2个数字构成目标的总和。打印0到输出文件。
  • 您能帮我找出错误的地方吗?这是我的git上文件的链接:https://github.com/0xBECEDA/ozon-tasks/blob/master/task-f/SO1.go该文件将创建带有数字的测试文件:https://github.com/0xBECEDA/ozon-tasks/blob/master/task-f/make-test-file.go这是测试文件:https://github.com/0xBECEDA/ozon-tasks/blob/master/task-f/input.txt
  • go sum binary-search
    1个回答
    1
    投票
    首先是您的问题,您只从文件读取输入到100字节的切片,但是您的输入数据会占用更多的位置All numbers are in diapason 0 < N < 999 999 999,所以我认为您不会从文件中读取所有数据
    © www.soinside.com 2019 - 2024. All rights reserved.