Quick actions

cmd+k|ctrl+k

Navigation

Languages

Algorithm

Snippet info

Language

Dart

Visibility

public

Author

obihenry578

Created

2025-01-29T10:31:38.954342Z

Updated

2025-02-07T13:41:53.980656Z

void main() {
//  booo(n){
//      for(var i = 0; i < n.length; i++){
//          print('boo');
//      }
//  }
 
//  booo([1,2,3,4,5]); // space complexity of 0(1) because we only declared var = i and not doing much in the function and we cant control what we put in as in the array 
 

//  arrayOfNTimes(n){
//      List arrayHi = []; // created new array = data structure , takes space 
//      // var = i = variables , takes space
//       for(var i = 0; i < n; i++){
//         arrayHi.add('hi'); // allocation , allocated hi to arrayi , takes space 
//      }
     
//      return arrayHi;
//  }
 
// print(arrayOfNTimes(6)) ; // 0(n) so this function has space complexity of 0(n)

// find the ist and nth tweets 
// compare the items using the dates 
// const array = 
// [{'date':  2012, 'tweet': 'hi'}, 
// {'date':  2013, 'tweet': 'dear'},
// {'date':  2015, 'tweet': 'make'},];

//  print('jkbdsdnvgv jk. f'.length);  //0(1);

//look for a pair of number in the list that give s you the sum of 8 when you add them 

// check for best possible solution in terms of time and space complexity
 
 // using linear time would be more efficient rather than nested loop (quadratic)
//  List array1 = [1,2,3,9]; // NO
//  List array2 = [1,2,4,4]; // YES so to check this 
 
//  int sum = 8;
 
//  bool doesTheArrayHasPairSumEqualTo8( int sum, array){
//      int low = 0;
//      int high = array.length-1;
     
//      bool thereIsSum = false;
     
//      while(low < high){
//          if(array[low]  + array[high]   == sum){
//              thereIsSum =  true;
//          }
//          print (array[low]  + array[high] );
//         low ++;
//         high--;
        
//      }
     
//      return thereIsSum;
//  }
 
//  print(doesTheArrayHasPairSumEqualTo8(8, array2)) ;

//  bool doesTheArrayHasPairSumEqualTo8( int sum, array){
   
//      Set<int> comp = {};
     
//      array.forEach((value ){
//          if(comp.contains(value )){
//              print( comp);
//              return true;
//          }
         
//          comp.add((sum - value).toInt());
//      });
     
//      return false;
//  }

//  print(doesTheArrayHasPairSumEqualTo8(sum, array2)) ; 
 
 
 // Given two array create a function that lets a user know (true/false) 
 // whether these two array contains any common item
 const array = ['a', 'b','c','x'];
 const array1 = ['z','y', 'i']; 
 //shoould return false;
 
 const array2 = ['a', 'b','c','x'];
 const array3 = ['z','y', 'a'];
 //shoould return true;
 
//  what are the input and output
// if the interviewer said its always array the input 
// how large can the input get in future 
// if its always a minimal size then we dont have to worry about big o timecomplexity or space 
// is our goal to be more efficient as possible, is time complexity or space complexity more important to us 
// the interviewer might say they just want more efficient function. assuming the array can get very very large 
// 2 parameters -- no size limit might be what the interviewer says 
// talk about the easiest solution that comes to mind in this case nested loop
//also talk while is no the bbest solution in this case (0(n^2)) quadratic time complexity which we try as muchj as possible in interviews 
// can we assume always two parameter 

 bool checkIfTheTwoListHasCommonItem(arrayX, arrayY){
    //  int totalLength = list1.length + list2.length;
    //  List<String> mergedList = arrayX + arrayY;
    //  List<String>  firstArray = arrayX;
    //  print(mergedList);
     bool hasCommon = false;
      Set<String> comp = {};
    //  for(var i = 0; i < mergedList.length; i++){
    //      if(comp.contains(mergedList[i])){
    //          hasCommon = true;
    //      }
         
    //      comp.add( mergedList[i]);
    //  }
    
    
    
    for(var i = 0; i < arrayY.length; i++){
         if(arrayX.contains(arrayY[i])){
             hasCommon = true;
         }
         
        //  comp.add( mergedList[i]);
        
    }
        
 //Assigning array to object as properties this function is mostly used when trying to improve time complexity
 // loop throough first array and create object where properties === items in the array
 Map<String, bool> map = {};
 for(var i = 0; i< arrayX.length; i++){
     if(map[i] != true){
         var item = arrayX[i];
         map[item] = true;
     }
 }
 
 print(map);
 
 
 // loop through the second array and check if the item in the second array exists on created object
 
 
  for(var j = 0; j< arrayY.length; j++){
     if(map [arrayY[j]] == true){
        hasCommon = true;
     }
 }

// 0(a) space complexity;
     
     return hasCommon;
 }
 
 
 
 
//  print(checkIfTheTwoListHasCommonItem(array2, array3));


 //find out if there is a pair that sums up to the number given
 // sum = 8 
 //items []
 void googleInterview(){
 List array1 = [1,2,3,9]; // NO
 List array2 = [1,2,4,4]; // YES so to check this 
 
 int sum = 8;  
    //  naive way 

    bool checkIfAnyPairSumsUptoTheSum(array, sum){
        
        for(var i = 0; i < array.length -1; i ++ ){
            for(var j = 1 + i; j < array.length ; j++ ){
               if(array[i] + array[j] == sum) {
                   
                   print('${(array[i], array[j] )}');
                   return true;
               }
            }
        }
        return false;
    }
    
   print(checkIfAnyPairSumsUptoTheSum(array2, sum)) ;
    
    // Better way 
        bool checkIfAnyPairSumsUptoTheSum1(array, sum){
        
        Set<int> comp = {};
     
     array.forEach((value ){
         if(comp.contains(value )){
             print( comp);
             return true;
         }
         
         comp.add((sum - value).toInt());
     });
     
     return false;
  
 }
 
  print(checkIfAnyPairSumsUptoTheSum1(array1, sum)) ;
 }
 


// Arrays();

}
INFO