Multiplicar Vetores removendo duplicidades

Sou iniciante em programação, e estou com dificuldades para resolver este exercício.
É meu primeiro tópico, alguém pode me ajudar?

Exercício:

Tenho dois vetores X e Y sendo que os vetores são vetor v[0…n-1] . Os vetores X e Y podem, ou não, estarem ordenados, com duplicatas ou com tamanhos diferentes. Preciso remover as duplicidades e gerar um vetor de saída que seja o resultado da multiplicação do vetor X e Y. O vetor de saída deverá, necessariamente, ter o mesmo tamanho do MENOR vetor de entrada.

Obs: Não posso utilizar nenhuma API ou métodos Replace, ReplaceAll, Split, etc…

O que consegui:

import java.io.*;
import java.math.*;
import java.text.*;
import java.util.*;
import java.util.regex.*;

public class Solution {
public static void main(String[] args) {
     
        double vetor_X[] = new double [4];
        for (int i=0; i<vetorX.length; i++){
        vetor_X[i] = Double.parseDouble(JOptionPane.showInputDialog(null,"digite os números do primeiro vetor"));    
        }
		
        double vetor_Y[] = new double [4];
        for (int j=0; j<vetorY.length; j++){
        vetor_Y[j] = Double.parseDouble(JOptionPane.showInputDialog(null,"digite os números do segundo vetor")); 

		}
		
		
		//Multiplicar Vetores
		
		
}
}

Resultado esperado:
Entrada:
Vetor X = { 4, 5, 5, 6 }; Vetor Y = { 10,20,30};
Exemplo:
Vetor Resultado= {40,100,180};

Como tirar as duplicidades nos vetores?

import java.util;

public class Solution {

    public static void main(String []args) {
        
            Scanner scan = new Scanner(System.in);
        
        int [] vetA = new int[10];
        int [] vetB = new int[vetorA.length];
        int [] vetC = new int[vetorA.length];
     
    for(int i = 0; i < vetorA.length; i++) {   
    VetorA[i] = scan.nextInt();
    }
     for(int i = 0; i < vetorB.length; i++) {   
    VetorB[i] = scan.nextInt();
    }     
        
    for(int i=0; i < vetorC.length;i++) {
    vetorC[i] = vetorA[i] * vetorB[i];
        }
        
    
    System.out.print("vetorA =" );
    for(int i=0; i<vetorA.length; i++){
        System.out.print(vetorA[i] + " ");
    }
     System.out.println();
    
    for(int i=0; i<vetorB.length; i++){
        System.out.print(vetorB[i] + " ");
    }
     System.out.print("vetorC =" );

    for(int i=0; i<vetorC.length; i++){
        System.out.print(vetorC[i] + " ");
    }
 System.out.println();
}
}

vamos la

se vc tem uma lista de elementos e quer gerar uma lista de elementos unicos, existem algumas tecnicas.

depende se vc quer manter a ordem ou não. por exemplo, se vc 1,5,5,3,1 o resultado final pode ser 1,3,5 ou 1,5,3?

vc tem algumas formas, como a força bruta

chame o seu array de original e crie um vetor saida, inicialize com o primeiro elemento do original, crie dois contadores inteiros chamados posicaoS ( de saida) e posicaoO (de original).

saida[0] = original[0];
posicaoS = 1;
posicaoO = 1;

agora veja se original[ posicaoO ] aparece no array de saida entre os indices 0 e posicaoS-1 (um loop)

não aparece? então faz saida[ posicaoS ] = original[ posicaoO ] e, então, incrementa os dois contadores.

aparece? então vc incrementa apenas posicaoO.

faça isso ate que posicaoO chegue no fim do vetor original.

agora o seu vetor saida tem os elementos distintos do vetor original. porem vc tem um probleminha

se vc começa de um vetor de tamanho 5, e vc só tem o mesmo numero repetido, o seu vetor de saida deveria ter tamanho 1. então vc tem duas opções

  1. crie um vetor de tamanho posicaoS e copie para ele tudo o que foi gravado no vetor Saida.
  2. use apenas uma lista ligada ( ArrayList ) que ela vai se acomodar dinamicamente

existem outras formas de fazer isso. implemente algo que funciona primeiro antes de sair melhorando o codigo.

vc pode criar um array de pares ( valor , posicao ) e ordenar esse array pelo valor, percorrer esse vetor e pegando sempre os valores unicos com menor posição, depois ordenar pela posição. da um trabalho desgraçado

.

Muito obrigado pela ajuda.
A lista não precisa ser ordenada.

Vou tentar e informo se conseguir.