Frequently Asked Java Program 19: How To Find Duplicate Elements in Array

แชร์
ฝัง
  • เผยแพร่เมื่อ 21 พ.ย. 2024

ความคิดเห็น • 59

  • @bhushanmali2598
    @bhushanmali2598 ปีที่แล้ว +4

    Finally i found this in a very perfect way of explanation. Thank you ❤️

  • @divyad9144
    @divyad9144 2 ปีที่แล้ว +10

    In the first for loop i should be less than arr.length()-1, bcz when i is at index 4, then j will be i+1 (i.e) 5 which will lead to ArrayIndexOutofBound exception

    • @Testology-PradeepPandey
      @Testology-PradeepPandey 2 ปีที่แล้ว +1

      Hahaha...asking or telling

    • @msgudaduramath4980
      @msgudaduramath4980 2 ปีที่แล้ว

      It is not nessesary to compare the last element with others because it is already compared by other elements

  • @sarathr4495
    @sarathr4495 ปีที่แล้ว +2

    Hash set way is life saver sir 👍

  • @samK12_18
    @samK12_18 2 ปีที่แล้ว +3

    2 mistakes:
    1. i loop should be from 0 to array length-1.
    2. if condition inside j loop is incorrect.
    for(int i=0; i

    • @bhagathgudivaka1520
      @bhagathgudivaka1520 2 ปีที่แล้ว

      i

    • @samK12_18
      @samK12_18 2 ปีที่แล้ว

      @@bhagathgudivaka1520 Yes because if i goes to 5, then j becomes 6 and it will return array index out of bounds error.

    • @bhagathgudivaka1520
      @bhagathgudivaka1520 2 ปีที่แล้ว +2

      @@samK12_18 if j becomes 6 then inner loop will be stopped and Comes to outer loop again

  • @MDALAM-yh3pf
    @MDALAM-yh3pf ปีที่แล้ว +1

    first java is small j , last 2 java is capital J; how you prove multiple entry give same result?

  • @Amitpatil-g8g
    @Amitpatil-g8g ปีที่แล้ว

    great sir. plz upload latest trending logical programs java in automation interview.

  • @BharathKumarEnishetty
    @BharathKumarEnishetty 2 ปีที่แล้ว

    we can directly write as if(flag) , it would look good right , though it is fine , thanks

  • @sridhar6358
    @sridhar6358 3 ปีที่แล้ว +3

    The given array is {"java","C","C++","python","java"}
    the first iteration java is compared with c c++ python and java but with iterations as it goes forward
    the second iteration c is compared with c++ python and java
    the third iteration c++ is compared with python and java
    the fourth iteration python is compared with java

    • @dsantoshini
      @dsantoshini 2 ปีที่แล้ว

      yes

    • @keshavrawal2746
      @keshavrawal2746 2 ปีที่แล้ว +1

      it works as you said bcoz in first iteration "java" is already compared with all the elements

  • @gauri992
    @gauri992 3 ปีที่แล้ว +3

    Ur the best Sir. thanku

  • @TheShubhamVsnv
    @TheShubhamVsnv ปีที่แล้ว +3

    ?? how can fix this if i have three same element ??
    arr[]={"java","c","c++","python","java","java"};
    output : java
    java
    java

  • @srinivasrao-lw6xk
    @srinivasrao-lw6xk 3 ปีที่แล้ว +1

    I wrote this program . Bt when I take two duplicate(java,c) in the set . The out is showing like duplicate element is : java and next line duplicate element is c.

  • @kanithisatishkumar7036
    @kanithisatishkumar7036 3 ปีที่แล้ว +6

    sir, please provide code for multiple duplicates.

  • @silvere4830
    @silvere4830 2 ปีที่แล้ว

    Please, provide an example with Java Streams

  • @snehalwakode5291
    @snehalwakode5291 ปีที่แล้ว +1

    Thank u sir..

  • @indiantourism975
    @indiantourism975 2 ปีที่แล้ว +2

    you're explained clearly and easily I understood how to find duplicate elements thank you so much, Sir. But the count of duplicate elements did not get the correct value when using the HashSet approach and I've given my coding below
    public class DuplicatesArrays {
    public static void main(String[] args) {

    Boolean flag = false;
    Boolean dntdup = false;
    int count = 0;
    int count1 = 0;
    String [] ar = {"l","m","v","m","n","y","m"};

    System.out.println(ar.length);

    // using for loop
    for (int i = 0; i < ar.length; i++) {
    for (int j = i+1; j < ar.length; j++) {
    if (ar[i]==ar[j]) {
    count = count+1;
    System.out.println("found duplicate :" + ar[i]);
    flag = false;

    }
    }
    }

    System.out.println("count duplicate elements by for loop: "+count);

    if (flag == true) {
    System.out.println("not found duplicate:");

    }

    //using hashset

    HashSet h = new HashSet();
    for (String l : ar) {
    if (h.add(l)==false) {
    count1 = count1+1;
    System.out.println("found duplicate :" + l);

    }
    }

    System.out.println("count duplicate elements by hashset :" + count1);

    if (flag == true) {
    System.out.println("not found duplicate:");

    }

    }
    }

    • @Forty3Stories
      @Forty3Stories ปีที่แล้ว

      In hashset the first time the element is found count is zero . So while printing count u should print count + 1

  • @thesurajpatade
    @thesurajpatade 3 ปีที่แล้ว +2

    Using HashSet approach, if we have{java, java, java} it will print three times java which is not right, any solution to this?

    • @csRHarish
      @csRHarish 2 ปีที่แล้ว

      How it allowing duplicate values to u?

  • @Shwethatp
    @Shwethatp ปีที่แล้ว

    sir along with the finding the duplicate elements i want to print how many times it's repeated...can you help me with this program

  • @jarvisfriday7452
    @jarvisfriday7452 4 ปีที่แล้ว +1

    suppose if we have multiple duplicates like {"java","python","ruby","c#","python","java"} ??? how to print those duplicates separately?

    • @kanithisatishkumar7036
      @kanithisatishkumar7036 3 ปีที่แล้ว

      if you got this code plzz post it ?

    • @baggumani
      @baggumani 2 ปีที่แล้ว +1

      @@kanithisatishkumar7036 Iterator i=langs.iterator();
      while(i.hasNext())
      {
      System.out.println(i.next());
      }
      Use Iterator to print all the values in Hashset.

    • @sarves2482
      @sarves2482 8 หลายเดือนก่อน

      @@baggumani iterator returns all the values in the String including duplicates, not only the duplicates

  • @tarunsharma9974
    @tarunsharma9974 2 ปีที่แล้ว +2

    How can I get the count of this duplicate element

    • @omprakash7040
      @omprakash7040 2 ปีที่แล้ว

      +1

    • @tarunsharma9974
      @tarunsharma9974 2 ปีที่แล้ว

      @@omprakash7040 it didn't work like that, can you please share the code

    • @gurunathkulkarni-ry8yv
      @gurunathkulkarni-ry8yv ปีที่แล้ว

      ​@@tarunsharma9974 First intinalize count as 0 after printing the duplicate elements increment the count.

  • @faisalsakib9586
    @faisalsakib9586 5 ปีที่แล้ว +1

    How to remove duplicate duplicate values from array ??

    • @theflutterboi
      @theflutterboi 3 ปีที่แล้ว

      use Set

    • @suganthym1438
      @suganthym1438 3 ปีที่แล้ว

      Create a new array and add the elements only when Not duplicate. Or use a java collection type that ignores duplicates

  • @as8212
    @as8212 4 ปีที่แล้ว

    Can some body explain; on first logic first element is compared with elements after that, so say 3 rd element is compared with 4th element, it is not compared with first or second, Is that logic right???

    • @Mm-zt1gk
      @Mm-zt1gk 4 ปีที่แล้ว

      No need coz duplicate off first nd second already searched

    • @renjithdhoni7
      @renjithdhoni7 4 ปีที่แล้ว

      Thats not needed when you search,i=1. And j=3 ,the same thing need to be searched in j=3 and i=1

    • @bharathkoneru4008
      @bharathkoneru4008 4 ปีที่แล้ว

      Not needed because i=0, j=1 (arr[0]== arr[1]) comparison is already done to check for duplicates. So, there is no need of comparing again with the former i.e; i=1, j=0 arr[1] == arr[0]

    • @harish3787
      @harish3787 4 ปีที่แล้ว

      Take the upper for loop once and check what it is printing ok
      Then check what the lower for loop checking
      Now put i = let's say 4
      And then u put 2nd for loop you will see it will give values upto 4 ok so it always checks values hoto that point

  • @mohammedajazquadri7869
    @mohammedajazquadri7869 4 ปีที่แล้ว +1

    Sir your mail is there?? I have some doubts??

  • @sridhar6358
    @sridhar6358 3 ปีที่แล้ว

    The first logic wont work well as it does not compare with the previous values

  • @maharudra947
    @maharudra947 2 ปีที่แล้ว

    what about multiple duplicates

  • @suiiiiii5798
    @suiiiiii5798 4 หลายเดือนก่อน

    ❤️

  • @HvujES
    @HvujES 3 ปีที่แล้ว

    the methods are time complexity are really bad. the 1st one is O(N^2).
    you can do it in O(N) with 1 loop and check for 3 or more duplicates/
    the code:(same for String)
    class FindDuplicate {
    // Function to print duplicates
    void printRepeating(int arr[], int size)
    {
    int i;
    System.out.println("The repeating elements are : ");

    for (i = 0; i < size; i++) {
    int j = Math.abs(arr[i]);
    if (arr[j] >= 0)
    arr[j] = -arr[j];
    else
    System.out.print(j + " ");
    }
    }

    // Driver code
    public static void main(String[] args)
    {
    FindDuplicate duplicate = new FindDuplicate();
    int arr[] = { 1, 2, 3, 1, 3, 6, 6 };
    int arr_size = arr.length;

    duplicate.printRepeating(arr, arr_size);
    }
    }
    for String:
    String[] users = "User1,User2,User1,User,User".split(",");
    Set uniquUsers = new HashSet();
    for (int i = 0; i < users.length; i++) {
    if (!uniquUsers.add(users[i]))
    users[i] = "Duplicate"; // here I am assigning Duplicate instead if find duplicate
    // you can assign as null or whatever you want to do with duplicates.
    }
    System.out.println(Arrays.toString(users));

    • @gautamkumarjha2686
      @gautamkumarjha2686 3 ปีที่แล้ว

      The first one is wrong algo

    • @HvujES
      @HvujES 3 ปีที่แล้ว

      @@gautamkumarjha2686 it's not wrong google in geeksforgeeks

    • @gautamkumarjha2686
      @gautamkumarjha2686 3 ปีที่แล้ว

      @@HvujES that code will true on some particular arrey only
      For example any integer greater then 15 at any index of array

    • @HvujES
      @HvujES 3 ปีที่แล้ว

      @@gautamkumarjha2686 works fine for me.
      www.geeksforgeeks.org/find-duplicates-in-on-time-and-constant-extra-space/

  • @sureshsubramaniyan3201
    @sureshsubramaniyan3201 3 ปีที่แล้ว

    suppose we have multiple duplicates like below and want to the print the output only once like duplicate elements = java,c++,python. Could you please guide me.
    String arr[] = {"java","python","c++","java","c","c++","devops","java","c++","python","python"};