我一直在测试我的代码,以应对码评估上的重叠矩形挑战。我觉得我的代码接近解决方案,因为我已经在我的机器上测试过它,它看起来是正确的。然而,Codeeval很挑剔,不会执行代码,声称它是hanging.No,并给出了进一步的信息。它在过去已经这样做了,但这是由于我没有关闭我的扫描仪在最后。我是不是违反了类似的原则?
任何关于寻找更简单或更好的编码实践的解决方案的建议都将受到赞赏。
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws FileNotFoundException {
File file = new File("C:/Users/minda_000/Desktop/text.txt");
FileReader fr = new FileReader(file);
Scanner scan = new Scanner(fr);
scan.useDelimiter(",");
boolean flag = true;
while (scan.hasNextLine()) {
String line = scan.nextLine();
Scanner scanline = new Scanner(line);
scanline.useDelimiter(",");
int lxa = scanline.nextInt();
int lya = scanline.nextInt();
int rxa = scanline.nextInt();
int rya = scanline.nextInt();
int lxb = scanline.nextInt();
int lyb = scanline.nextInt();
int rxb = scanline.nextInt();
int ryb = scanline.nextInt();
int[] contentsofx = contentsOfX(lxa, rxa);
int[] contentsofy = contentsOfY(lya, rya);
int[] contentsofx2 = contentsOfX(lxb, rxb);
int[] contentsofy2 = contentsOfY(lyb, ryb);
scanline.close();
for (int i = 0; i < contentsofx.length; i++) {
for (int j = 0; j < contentsofx2.length; j++) {
if (contentsofx[i] == contentsofx2[j]) {
if(i<contentsofy.length && i<contentsofy2.length && contentsofy[i]==contentsofy2[j]){
System.out.println(true);
flag=false;
}
}
}
}
if(flag) {
System.out.println(false);
}
flag=true;
}
scan.close();
}
public static int[] contentsOfX(int lx, int rx) {
int[] line = new int[(rx - lx)];
for (int i = 0; i < line.length; i++) {
line[i] = lx + i;
}
return line;
}
public static int[] contentsOfY(int ly, int ry) {
int[] line = new int[(ly - ry)];
for (int i = 0; i < line.length; i++) {
line[i] = ry + i;
}
return line;
}
}发布于 2015-12-06 00:54:33
为了确保,在将解决方案上传到CodeEval之前,您正在将“C:/User/minda_000/Desktop/text.txt”更改为args,对吗?
其他一些问题:
当它们应该是大写的时候,你就输出了小写的真假。
在这一行--
if(i<contentsofy.length && i<contentsofy2.length && contentsofy[i]==contentsofy2[j]){--当i和/或j大于contentsofy和contentsofy2的长度时,就会出现问题。
注释将使您的代码更容易阅读。:-)
发布于 2015-12-07 05:19:49
我放弃了这段代码,并或多或少地使用了一个更简洁的解决方案,只使用布尔逻辑。这段代码的问题是,contentsOfX和contentsOfY方法对于一个点的重叠应该更大一点。此外,此时我暗示一个矩形总是位于另一个矩形的左边。由于这一点,嵌套的for循环无法正常工作。尽管如此,数组还是对每个值进行排序,从最小值x,y到最大值x,y,所以如果您检查数组中的反向极性索引,那么逻辑应该是工作的。
https://stackoverflow.com/questions/34104602
复制相似问题