Java 中的交集方法,如何对交集的边界进行排序,以免出现重复项



我正在尝试解决这个练习两个间隔交集,我认为我几乎解决了所有问题,但是当我尝试示例输入时,我得到 15 和 5,我想对结果进行排序,我的想法是使用数组列表作为间隔,然后删除重复项,但我只是想要一个更好的方法来解决这个问题, 如果我输入作为输入 2 3 和 2 3,我会得到输出 2 3 和 2 3,这就是为什么我问你一个更好的方法来解决这个问题,任何更好的想法

感谢您的帮助

这是我到目前为止的代码

import java.util.*;
public class TwoIntervalIntersection {
    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);
        int n1 = sc.nextInt();
        int n2 = sc.nextInt();
        int n3 = sc.nextInt();
        int n4 = sc.nextInt();
        if(n1 >= n3 && n1 <= n4){
            System.out.print(n1);
            System.out.print(" ");
        }
        if(n2 >= n3 && n2 <= n4){
            System.out.print(n2);
            System.out.print(" ");
        }
        if(n3 >= n1 && n3 <= n2){
            System.out.print(n3);
            System.out.print(" ");
        }
       if(n4 >= n1 && n4 <= n2){
            System.out.print(n4);
        }
    }
}
嘿,

您的方法还不错,尽管最好在最后打印之前存储内容,以便您可以在控制台中最终打印之前更改/交换/检查它们的值。要以错误的方式修复间隔部分,您可以执行以下操作:

public static void main(String args[]){
        Scanner sc = new Scanner(System.in);
        System.out.print("Enter interval one: ");
        int left1 = sc.nextInt();
        int right1 = sc.nextInt();
        System.out.print("Enter interval two: ");
        int left2 = sc.nextInt();
        int right2 = sc.nextInt();
        int end1 = 0;
        int end2 = 0;
        if(left1 >= left2 && left1 <= right2)
            end1 = left1;
        if(right1 >= left2 && right1 <= right2)
            end2 = right1;
        if(left2 >= left1 && left2 <= right1)
           end1 = left2;
       if(right2 >= left1 && right2 <= right1)
            end2 = right2;
       if(end1 > end2){
            int h= end1;
            end1 = end2;
            end2 = h;
        }
       System.out.println(end1 + " " + end2);
}

如果您想改进程序,可以为用户输入的间隔添加相同的交换机制,因此当他输入"15 1"而不是"1 15"时,程序仍然可以正常工作。

相关内容

  • 没有找到相关文章

最新更新