Рубрики

Распечатать все отдельные элементы заданного целочисленного массива

Подходить:
1. Поместите все входные целые в ключ hashmap
2. Печать ключейУстановить за пределами цикла

Джава

import java.util.HashMap;

public class UniqueInArray2 {

  

    public static void main(String args[])

  

    {

        int ar[] = { 10, 5, 3, 4, 3, 5, 6 };

        HashMap<Integer,Integer> hm = new HashMap<Integer,Integer>();

        for (int i = 0; i < ar.length; i++) {

            hm.put(ar[i], i);

        }

        // Использование hm.keySet () для вывода вывода уменьшает сложность времени. - Локеш

        System.out.println(hm.keySet());

  

    }

  
}

C #

// C # реализация подхода

using System;

using System.Collections.Generic; 

  

public class UniqueInArray2 

{

  

    public static void Main(String []args)

  

    {

        int []ar = { 10, 5, 3, 4, 3, 5, 6 };

        Dictionary<int,int> hm = new Dictionary<int,int>();

        for (int i = 0; i < ar.Length; i++)

        {

            if(hm.ContainsKey(ar[i]))

                hm.Remove(ar[i]);

            hm.Add(ar[i], i);

        }

  

        // Использование hm.Keys для печати вывода

        // уменьшает сложность времени. - Локеш

        var v = hm.Keys;

        foreach(int a in v)

            Console.Write(a+" ");

  

    }

  
}

  
/ * Этот код предоставлен PrinciRaj1992 * /


Для целочисленного массива выведите все отдельные элементы массива. Данный массив может содержать дубликаты, и выходные данные должны печатать каждый элемент только один раз. Данный массив не отсортирован.

Примеры:

Input: arr[] = {12, 10, 9, 45, 2, 10, 10, 45}
Output: 12, 10, 9, 45, 2

Input: arr[] = {1, 2, 3, 4, 5}
Output: 1, 2, 3, 4, 5

Input: arr[] = {1, 1, 1, 1, 1}
Output: 1

Простое решение состоит в том, чтобы использовать два вложенных цикла. Внешний цикл выбирает элемент один за другим, начиная с самого левого элемента. Внутренний цикл проверяет наличие элемента слева от него. Если присутствует, то игнорирует элемент, иначе печатает элемент. Ниже приводится реализация простого алгоритма.

C ++

// C ++ программа для печати всех отдельных элементов в данном массиве
#include <iostream>
#include <algorithm>

using namespace std;

  

void printDistinct(int arr[], int n)

{

    // Выбрать все элементы один за другим

    for (int i=0; i<n; i++)

    {

        // Проверяем, напечатан ли выбранный элемент

        int j;

        for (j=0; j<i; j++)

           if (arr[i] == arr[j])

               break;

  

        // Если не напечатано ранее, то распечатать

        if (i == j)

          cout << arr[i] << " ";

    }

}

  
// Программа драйвера для проверки вышеуказанной функции

int main()

{

    int arr[] = {6, 10, 5, 4, 9, 120, 4, 6, 10};

    int n = sizeof(arr)/sizeof(arr[0]);

    printDistinct(arr, n);

    return 0;

}

Джава

// Java программа для печати всего
// элементы в данном массиве

import java.io.*;

  

class GFG {

  

    static void printDistinct(int arr[], int n)

    {

        // Выбрать все элементы один за другим

        for (int i = 0; i < n; i++)

        {

            // Проверяем, выбран ли элемент

            // уже напечатано

            int j;

            for (j = 0; j < i; j++)

            if (arr[i] == arr[j])

                break;

      

            // Если не напечатано ранее,

            // затем распечатать

            if (i == j)

            System.out.print( arr[i] + " ");

        }

    }

      

    // Драйвер программы

    public static void main (String[] args) 

    {

        int arr[] = {6, 10, 5, 4, 9, 120, 4, 6, 10};

        int n = arr.length;

        printDistinct(arr, n);

  

    }

}

  
// Этот код предоставлен vt_m

python3

# python программа для распечатки всего
# элементов в данном массиве

  

def printDistinct(arr, n):

  

    # Выберите все элементы по одному

    for i in range(0, n):

  

        # Проверьте, выбран ли элемент

        # уже напечатан

        d = 0

        for j in range(0, i):

            if (arr[i] == arr[j]):

                d = 1

                break

  

        # Если не напечатано ранее,

        # затем распечатай

        if (d == 0):

            print(arr[i])

      
# Программа драйвера для проверки вышеуказанной функции

arr = [6, 10, 5, 4, 9, 120, 4, 6, 10]

n = len(arr)

printDistinct(arr, n)

  
# Этот код предоставлен Sam007.

C #

// C # программа для печати всего
// элементы в данном массиве

using System;

  

class GFG {

  

    static void printDistinct(int []arr, int n)

    {

          

        // Выбрать все элементы один за другим

        for (int i = 0; i < n; i++)

        {

              

            // Проверяем, выбран ли элемент

            // уже напечатано

            int j;

            for (j = 0; j < i; j++)

                if (arr[i] == arr[j])

                     break;

      

            // Если не напечатано ранее,

            // затем распечатать

            if (i == j)

            Console.Write(arr[i] + " ");

        }

    }

      

    // Драйвер программы

    public static void Main () 

    {

        int []arr = {6, 10, 5, 4, 9, 120,

                                  4, 6, 10};

        int n = arr.Length;

          

        printDistinct(arr, n);

  

    }

}

  
// Этот код предоставлен Sam007.

PHP

<?php
// PHP программа для печати всего
// элементы в данном массиве

  

function printDistinct($arr, $n)

{

    // Выбрать все элементы один за другим

    for($i = 0; $i < $n; $i++)

    {

          

        // Проверяем, выбран ли элемент

        // уже напечатано

        $j;

        for($j = 0; $j < $i; $j++)

        if ($arr[$i] == $arr[$j])

            break;

  

        // Если не напечатано

        // раньше, тогда распечатай

        if ($i == $j)

        echo $arr[$i] , " ";

    }

}

  

    // Код драйвера

    $arr = array(6, 10, 5, 4, 9, 120, 4, 6, 10);

    $n = sizeof($arr);

    printDistinct($arr, $n);

      
// Этот код предоставлен нитин митталь
?>

Выход:

6 10 5 4 9 120

Сложность времени вышеупомянутого решения составляет O (n 2 ). Мы можем использовать сортировку, чтобы решить проблему за O (nLogn) время. Идея проста, сначала отсортируйте массив так, чтобы все вхождения каждого элемента стали последовательными. Как только вхождения становятся последовательными, мы можем обойти отсортированный массив и распечатать отдельные элементы за O (n) времени. Ниже приводится реализация идеи.

C ++

// C ++ программа для печати всех отдельных элементов в данном массиве
#include <iostream>
#include <algorithm>

using namespace std;

  

void printDistinct(int arr[], int n)

{

    // Сначала сортируем массив так, чтобы все вхождения стали последовательными

    sort(arr, arr + n);

  

    // Обход отсортированного массива

    for (int i=0; i<n; i++)

    {

       // Перемещаем индекс вперед, пока есть дубликаты

       while (i < n-1 && arr[i] == arr[i+1])

          i++;

  

       // выводим последнее вхождение текущего элемента

       cout << arr[i] << " ";

    }

}

  
// Программа драйвера для проверки вышеуказанной функции

int main()

{

    int arr[] = {6, 10, 5, 4, 9, 120, 4, 6, 10};

    int n = sizeof(arr)/sizeof(arr[0]);

    printDistinct(arr, n);

    return 0;

}

Джава

// Java программа для печати всего
// элементы в данном массиве

import java.io.*;

import java .util.*;

  

class GFG 

{

    static void printDistinct(int arr[], int n)

    {

        // Сначала сортируем массив так, чтобы

        // все вхождения становятся последовательными

        Arrays.sort(arr);

      

        // Обход отсортированного массива

        for (int i = 0; i < n; i++)

        {

            // Перемещаем индекс вперед, пока

            // есть дубликаты

            while (i < n - 1 && arr[i] == arr[i + 1])

                i++;

      

            // распечатать последнее вхождение

            // текущий элемент

            System.out.print(arr[i] +" ");

        }

    }

      

    // Драйвер программы

    public static void main (String[] args) 

    {

        int arr[] = {6, 10, 5, 4, 9, 120, 4, 6, 10};

        int n = arr.length;

        printDistinct(arr, n);

  

    }

}

  
// Этот код предоставлен vt_m

python3

# Программа Python для печати всех различных
# элементов в данном массиве

  

def printDistinct(arr, n):

      

    # Сначала отсортируйте массив так, чтобы

    # все вхождения становятся последовательными

    arr.sort();

  

    # Обойти отсортированный массив

    for i in range(n):

          

        # Переместить индекс вперед, пока есть дубликаты

        if(i < n-1 and arr[i] == arr[i+1]):

            while (i < n-1 and (arr[i] == arr[i+1])):

                i+=1;

              

  

        # prlast вхождение текущего элемента

        else:

            print(arr[i], end=" ");

  
# Код драйвера

arr = [6, 10, 5, 4, 9, 120, 4, 6, 10];

n = len(arr);

printDistinct(arr, n);

  
# Этот код предоставлен 29AjayKumar

C #

// C # программа для печати всего
// элементы в данном массиве

using System;

  

class GFG {

  

    static void printDistinct(int []arr, int n)

    {

          

        // Сначала сортируем массив так, чтобы

        // все вхождения становятся последовательными

        Array.Sort(arr);

      

        // Обход отсортированного массива

        for (int i = 0; i < n; i++)

        {

              

            // Перемещаем индекс вперед, пока

            // есть дубликаты

            while (i < n - 1 && arr[i] == arr[i + 1])

                i++;

      

            // распечатать последнее вхождение

            // текущий элемент

            Console.Write(arr[i] + " ");

        }

    }

      

    // Драйвер программы

    public static void Main () 

    {

        int []arr = {6, 10, 5, 4, 9, 120, 4, 6, 10};

        int n = arr.Length;

          

        printDistinct(arr, n);

    }

}

  
// Этот код предоставлен Sam007.

PHP

<?php
// PHP программа для печати всего
// элементы в данном массиве

  

function printDistinct( $arr, $n)

{

      

    // Сначала сортируем массив так

    // что все вхождения

    // стать последовательным

    sort($arr);

  

    // Обход отсортированного массива

    for ($i = 0; $i < $n; $i++)

    {

          

        // Переместить индекс вперед

        // пока есть дубликаты

        while ($i < $n - 1 and 

               $arr[$i] == $arr[$i + 1])

            $i++;

      

        // распечатать последнее вхождение

        // текущего элемента

        echo $arr[$i] , " ";

    }

}

  

    // Код драйвера

    $arr = array(6, 10, 5, 4, 9, 120, 4, 6, 10);

    $n = count($arr);

    printDistinct($arr, $n);

  
// Этот код предоставлен anuj_67.
?>


Выход:

4 5 6 9 10 120

Мы можем использовать хеширование, чтобы решить это в среднем за O (n) раз. Идея состоит в том, чтобы обойти заданный массив слева направо и отслеживать посещенные элементы в хеш-таблице. Ниже приводится реализация идеи.

C ++

/ * Программа CPP для печати всех отдельных элементов

   данного массива * /

#include<bits/stdc++.h>

using namespace std;

  
// Эта функция печатает все отдельные элементы

void printDistinct(int arr[],int n)

{

    // Создает пустой хэшсет

    unordered_set<int> s;

  

    // Обход входного массива

    for (int i=0; i<n; i++)

    {

        // Если нет, то вставьте

        // хеш-таблица и распечатать

        if (s.find(arr[i])==s.end())

        {

            s.insert(arr[i]);

            cout << arr[i] << " ";

        }

    }

}

  
// Метод драйвера для проверки вышеуказанного метода

int main ()

{

    int arr[] = {10, 5, 3, 4, 3, 5, 6};

    int n=7;

    printDistinct(arr,n);

    return 0;

}

Джава

/ * Java-программа для печати всех отдельных элементов данного массива * /

import java.util.*;

  

class Main

{

    // Эта функция печатает все отдельные элементы

    static void printDistinct(int arr[])

    {

        // Создает пустой хэшсет

        HashSet<Integer> set = new HashSet<>();

  

        // Обход входного массива

        for (int i=0; i<arr.length; i++)

        {

            // Если его нет, поместите его в хеш-таблицу и распечатайте

            if (!set.contains(arr[i]))

            {

                set.add(arr[i]);

                System.out.print(arr[i] + " ");

            }

        }

    }

  

    // Метод драйвера для проверки вышеуказанного метода

    public static void main (String[] args)

    {

        int arr[] = {10, 5, 3, 4, 3, 5, 6};

        printDistinct(arr);

    }

}

python3

# Python3 программа для печати всех отдельных элементов
# данного массива

  
# Эта функция печатает все отдельные элементы

def printDistinct(arr, n):

      

    # Создает пустой хэшсет

    s = dict();

  

    # Обход входного массива

    for i in range(n):

          

        # Если нет, то вставьте

        # hashtable и распечатайте его

        if (arr[i] not in s.keys()):

            s[arr[i]] = arr[i];

            print(arr[i], end = " ");

   
Код водителя

arr = [10, 5, 3, 4, 3, 5, 6];

n = 7;

printDistinct(arr, n);

  
# Этот код предоставлен Принчи Сингхом

C #

// C # программа для печати всего
// элементы данного массива

using System;

using System.Collections.Generic;

  

class GFG

{
// Эта функция печатает все
// отдельные элементы

public static void printDistinct(int[] arr)

{

    // Создает пустой хэшсет

    HashSet<int> set = new HashSet<int>();

  

    // Обход входного массива

    for (int i = 0; i < arr.Length; i++)

    {

        // если нет, то ставь

        // в хеш-таблице и распечатать

        if (!set.Contains(arr[i]))

        {

            set.Add(arr[i]);

            Console.Write(arr[i] + " ");

        }

    }

}

  
// Код драйвера

public static void Main(string[] args)

{

    int[] arr = new int[] {10, 5, 3, 4, 3, 5, 6};

    printDistinct(arr);

}
}

  
// Этот код предоставлен Shrikant13

Выход:

10 5 3 4 6 

Еще одно преимущество хеширования перед сортировкой состоит в том, что элементы печатаются в том же порядке, что и во входном массиве.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Распечатать все отдельные элементы заданного целочисленного массива

0.00 (0%) 0 votes