【问题标题】:Union of two Arrays without default functions in Java [closed]Java中没有默认函数的两个数组的联合[关闭]
【发布时间】:2014-09-23 19:45:49
【问题描述】:

我正在为我的面试做准备,并且我已经完成了 Java 中两个数组的联合。我在 Internet 上搜索了很多示例,但是所有示例都使用了 Java 中可用的默认函数,例如 Set 等。我不想使用默认函数,这可能对我的程序有利。因为这就是公司会给我诸如“不使用任何默认功能的 AuB”之类的问题的方式。所以我花了 30 分钟,终于找到了解决方案。我不是在问任何问题,我只需要人们就我的逻辑提出建议,无论它是好的还是你迄今为止看到的最垃圾的逻辑,如果有人在不使用默认功能的情况下寻找解决方案,这也会很有帮助。

import java.util.List;
import java.util.Scanner;
import java.util.ArrayList;

public class Union {
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        System.out.print("Enter Size of A array: ");
        int asize = input.nextInt();
        int[] a = new int[asize];
        for(int i=0;i<a.length;i++){
            System.out.print("a["+i+"]: ");
            a[i] = input.nextInt();
        }
        System.out.print("Enter size of B array: ");
        int bsize = input.nextInt();
        int[] b = new int[bsize];
        for(int i=0;i<b.length;i++){
            System.out.print("b["+i+"]: ");
            b[i] = input.nextInt();
        }
        int count;
        List<Integer> list = new ArrayList<Integer>();
        for(int i=0;i<a.length;i++){
            count = 0;
            for(int j=0;j<=i;j++){
                if(a[i]!=a[j]){
                    count++;
                }
            }
            if(count==i){
                list.add(a[i]);
            }
        }
        for(int i=0;i<b.length;i++){
            count = 0;
            for(Integer e:list){
                if(b[i]!=e){
                    count++;
                }
            }
            if(count==list.size()){
                list.add(b[i]);
            }
        }
        for(Integer e:list){
            System.out.print(e+" ");
        }
    }
}

【问题讨论】:

  • 你确定list.sort(null) 是正确的/不是内置函数。
  • 这只是一个额外的步骤,我不想对其进行排序。为了清楚起见,我现在将其删除。谢谢。
  • “我没有问任何问题...” 请记住,Stack Overflow 是一个问答网站。如果您没有提出问题,那么我们无法给出答案。
  • 如果您可以对数组进行排序,则可以进行更简单/更有效的合并排序。或者您可以对组合数组进行排序和去重。
  • @Code-Apprentice 是的,我知道。我还发布了一些愚蠢的帖子,这些帖子浪费了我和会员的时间。我不担心我的反对票,我认为即使没有提出问题,建议也可能属于答案类别。如果没有用,请删除我的帖子。

标签: java list arraylist


【解决方案1】:

您的代码看起来很好。

你可以做一个简单的逻辑修改,而不是对每个重复的值使用 count++,只是 将 Array A 中的整数放入您的 ArrayList 中,然后在将 Array A 中的下一个整数放入时,只需解析 ArrayList 以检查我们是否已经存在该数字。然后可以对数组 B 执行相同的操作。

【讨论】:

    【解决方案2】:

    我可能会完全避免使用 java.util.List,因为这个问题应该纯粹是关于数组的。您知道两个数组的大小,并且可以将数据存储在大小为 a.length + b.length 的数组中,因为您知道联合的长度永远不会超过该长度。

    【讨论】:

    • 是的,第三个数组的大小不会超过 a+b 的大小,但是第三个数组中的剩余元素将为 0,并且它还会在末尾打印 0(s)。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-08
    • 1970-01-01
    • 2023-03-18
    • 2021-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多