Advertisement
JustMark

Distinct values

Feb 14th, 2022
557
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.56 KB | None | 0 0
  1. import java.util.*;
  2. import java.util.stream.*;
  3.  
  4. public class MyClass{
  5.  
  6.     public static void main(String[] args){
  7.         var arr = new ArrayList<Integer>(List.of(1, 1, 2, 4, 4, 5));
  8.         System.out.println(method1(arr));
  9.         System.out.println(method2(arr));
  10.         System.out.println(method3(arr));
  11.     }
  12.    
  13.     // Fast. O(n) time complexity
  14.     private static List<Integer> method1(List<Integer> arr) {
  15.         return arr.stream().distinct().collect(Collectors.toList());
  16.     }
  17.    
  18.     // Fast. O(n) time complexity
  19.     private static List<Integer> method2(List<Integer> arr) {
  20.         var taken = new HashSet<Integer>();
  21.         var result = new ArrayList<Integer>();
  22.        
  23.         for (int i = 0; i < arr.size(); i++) {
  24.             var value = arr.get(i);
  25.             if (!taken.contains(value)) {
  26.                 taken.add(value);
  27.                 result.add(value);
  28.             }
  29.         }
  30.        
  31.         return result;
  32.     }
  33.    
  34.     // Slow. O(n^2) time complexity
  35.     private static List<Integer> method3(List<Integer> arr) {
  36.         var result = new ArrayList<Integer>();
  37.        
  38.         for (int i = 0; i < arr.size(); i++) {
  39.             var value = arr.get(i);
  40.             var exists = false;
  41.            
  42.             for (int j = 0; j < result.size(); j++) {
  43.                 if (Objects.equals(result.get(j), value)) {
  44.                     exists = true;
  45.                     break;
  46.                 }
  47.             }
  48.            
  49.             if (!exists) result.add(value);
  50.         }
  51.        
  52.         return result;
  53.     }
  54. }
  55.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement