优化代码以在java上传递TLE的建议

优化代码以在java上传递TLE的建议,java,arrays,treemap,Java,Arrays,Treemap,我写了一段代码,将两个整数数组作为输入,创建两个具有其频率(整数出现次数)的树形图,并写入两个频率中不存在的值,或者频率不同。由于TLE(超过时间限制),数组大小为10^6时,测试用例失败 import java.util.*; //导入java.util.stream.collector; 公共类解决方案{ 公共静态void main(字符串参数[]) { 扫描仪s=新的扫描仪(System.in); int x=s.nextInt(); int[]arr=新的int[x]; int i,j,

我写了一段代码,将两个整数数组作为输入,创建两个具有其频率(整数出现次数)的树形图,并写入两个频率中不存在的值,或者频率不同。由于TLE(超过时间限制),数组大小为10^6时,测试用例失败

import java.util.*;
//导入java.util.stream.collector;
公共类解决方案{
公共静态void main(字符串参数[])
{
扫描仪s=新的扫描仪(System.in);
int x=s.nextInt();
int[]arr=新的int[x];
int i,j,计数=0;

对于(i=0;i而不是在嵌套循环中遍历同一数组(O(n^2)次)这样计算重复项


用于(i=0;iyes,我需要以排序的形式提取数字,我无法理解您的上述观点,请您详细说明。对不起,我打字速度很快,并且在代码中犯了一些错误,现已修复。还添加了一些澄清,希望现在更清楚。您看过我的解决方案吗?是的,但我需要优化相同的代码以使其更清晰你能不能提出一些建议,改变整个代码是不可行的。
import java.util.*;
//import java.util.stream.Collectors;
public class Solution {

public static void main(String args[])
{
    Scanner s = new Scanner(System.in);
    int x=s.nextInt();
    int[] arr=new int[x];
    int i,j,count=0;
    for(i=0;i<x;i++)
    {
    arr[i]=s.nextInt(); 
    }
    Map<Integer, Integer> check=new TreeMap<Integer, Integer>();
    for(i=0;i<x;i++)
    {
        for(j=0;j<x;j++)
        {
            if(arr[i]==arr[j])
            {
                count++;
            }
        }
        check.put(arr[i], count);
        count=0;
    }
    int y=s.nextInt();
    int[] brr=new int[y];
    for(i=0;i<y;i++)
    {
    brr[i]=s.nextInt(); 
    }
    Map<Integer, Integer> check1=new TreeMap<Integer, Integer>();
    int count1=0;
    for(i=0;i<y;i++)
    {
        for(j=0;j<y;j++)
        {
            if(brr[i]==brr[j])
            {
                count1++;
            }
        }
        check1.put(brr[i], count1);
        count1=0;
    }
    //System.out.println(check);
    //System.out.println(check1);
    ArrayList<Integer> store=new ArrayList<Integer>();
    for(int key:check1.keySet())
    {
        if(check.containsKey(key))
        {
            int valb=check.get(key);
            int vala=check1.get(key);
            if(vala-valb!=0)
            {
                store.add(key);
            }
        }
        else
        {
            store.add(key);
        }
    }
    //Collections.sort(store);
    for(i=0;i<store.size();i++)
    {
        System.out.print(store.get(i)+" ");
    }
}
[1, 2, 3, 4, 2, 3, 4, 5] 
{1 -> 1, 2 -> 2, 3 -> 2, 4 -> 2, 5 -> 1}