Quick actions

cmd+k|ctrl+k

Navigation

Languages

Udemy: Master Coding Interview - Coding Problems - #52

Snippet info

Language

Csharp

Visibility

public

Author

jcurrie33

Created

2020-08-01T22:07:18Z

Updated

2020-08-01T23:14:42Z

using System;
using System.Collections.Generic;

// Given 2 arrays, create a function that lets a user know (true/false)
// whether these two arrays contain any common items

// For Example:
// const array1 = ['a', 'b', 'c', 'x'];
// const array1 = ['z', 'y', 'i'];
// should return false.
// ----------
// const array1 = ['a', 'b', 'c', 'x'];
// const array1 = ['z', 'y', 'x'];
// should return true.

// Naive approach: Loop through first list, then another inner loop through
// second list, comparing values. This is slow, O(n^2) due to nested loops.
// Next approach: Add elements to hash set? Sort lists?

class MainClass {
    static char[] array1 = {'a', 'b', 'c', 'x'};
    static char[] array2 = {'z', 'y', 'x'};
    static char[] array3 = {'z', 'y', 'i'};
    
    static void Main() {
        Console.WriteLine("Result = " + containsCommonItems2(array1, array2));
        
    }
    
    // O(a*b)
    static bool containsCommonItems(char[] array1, char[] array2) {
        for (int i = 0; i < array1.Length; i++) {
            for (int j = 0; j < array2.Length; j++) {
                if (array1[i] == array2[j]) {
                    return true;
                }
            }
        }
        return false;
    }
    
    // O(a+b)
    static bool containsCommonItems2(char[] array1, char[] array2) {
        // Loop through first array and create object where 
        //  properties = items in array.
        HashSet<char> set = new HashSet<char>();
        for (int i = 0; i < array1.Length; i++) {
            set.Add(array1[i]);
        }
        // Loop through second array and check if item in second array 
        //  exists on created object.
        for (int j = 0; j < array2.Length; j++) {
            if (set.Contains(array2[j])) {
                return true;
            }
        }
        
        
        return false;
    }
}
INFO