gpt4 book ai didi

Java 3-SUM 代码表现异常

转载 作者:行者123 更新时间:2023-12-01 09:20:22 25 4
gpt4 key购买 nike

我尝试过解决 3-sum 问题,您可以从文件中读取数组元素的数量,然后读取数组本身,然后将三元组发送到另一个文件。

对于那些不知道 3-sum 问题的人,这里是:3SUM 问题询问给定的 n 个实数集是否包含三个总和为零的元素。如果是,则返回三元组。三胞胎必须是不同的。

这是我的代码:

   import java.util.*;
import java.io.*;

public class Main
{ public static void main(String[] args) throws Exception
{ int number_elements=0;
int[] array_elements=null;
File file = new File("date.in.txt");
File file2 = new File("date.out.txt");

try
{Scanner input = new Scanner(file);
number_elements=input.nextInt();
array_elements = new int[number_elements];
int contor=0;
while(input.hasNext())
{ array_elements[contor]=input.nextInt();
contor++; }}

catch(IOException e)
{ System.out.println("eroare"); }


Arrays.sort(array_elements);


try
{ PrintWriter output = new PrintWriter(file2);
output.print("The triplets who sum to 0: ");
for(int i=0;i<number_elements-2;i++)
{ int j=i+1;
int k=number_elements-1;
while(k>=j)
{ int temp=array_elements[i]+array_elements[j]+array_elements[k];
if(temp==0)
{ output.println("( "+array_elements[i]+", "+array_elements[j]+", "+array_elements[k]+" )\n");
break; }
else if(temp>0)
k--;
else if(temp<0)
j++; }}
output.close(); }

catch(IOException e)
{ System.out.println("eroare"); }
}}

对于输入:

8

3 1 2 -5 -2 10 7 3

我明白了

The triplets who sum to 0: ( -5, -2, 7 )

( -2, 1, 1 )

我真的不明白为什么,我的意思是,

( -2, 1, 1 )

甚至不属于我的数组。如果有人能指出我的错误,我将非常感激。

最佳答案

(-2,1,1) 不属于您的数组。然而,-2 和 1 却可以。所以你可以断定“1”正在重复。要解决此问题,您应该将 while 循环的条件更改为 k > j 而不是 k >= j

关于Java 3-SUM 代码表现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40204061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com