File tree Expand file tree Collapse file tree 2 files changed +105
-0
lines changed 
short_phone_interview_problems Expand file tree Collapse file tree 2 files changed +105
-0
lines changed Original file line number Diff line number Diff line change 1+ #!/usr/bin/env python 
2+ 
3+ __author__  =  "bt3" 
4+ 
5+ 
6+ class  HashTable (object ):
7+     def  __init__ (self , slots = 10 ):
8+         self .slots  =  slots 
9+         self .table  =  []
10+         self .create_table ()
11+ 
12+     # Get the slot 
13+     def  hash_key (self , value ):
14+         return  hash (value )% self .slots 
15+ 
16+     # When creating the table, add list struct  
17+     # to each slot 
18+     def  create_table (self ):
19+         for  i  in  range (self .slots ):
20+             self .table .append ([])
21+ 
22+     # Method to add a item in the right slot 
23+     def  add_item (self , value ):
24+         key  =  self .hash_key (value )
25+         self .table [key ].append (value )
26+ 
27+     # Aux: print table 
28+     def  print_table (self ):
29+         for  key  in  range (self .slots ):
30+             print  "Key is {0}, value is {1}." .format (key , self .table [key ])
31+ 
32+     # Aux: find item 
33+     def  find_item (self , item ):
34+         item_hash  =  self .hash_key (item )
35+         return  item  in  self .table [item_hash ]
36+         
37+ 
38+ if  __name__  ==  '__main__' :
39+     dic  =  HashTable (5 )
40+     for  i  in  range (1 , 40 , 2 ):
41+         dic .add_item (i )
42+ 
43+     dic .print_table ()
44+     assert (dic .find_item (20 ) ==  False )
45+     assert (dic .find_item (21 ) ==  True )
Original file line number Diff line number Diff line change 1+ #!/usr/bin/env python 
2+ 
3+ __author__  =  "bt3" 
4+ 
5+ 
6+ class  Node (object ):
7+     def  __init__ (self , value , next = None ):
8+         self .value  =  value 
9+         self .next  =  next 
10+         
11+ 
12+ class  LinkedList (object ):
13+     def  __init__ (self ):
14+         self .head  =  None 
15+   
16+       def  _add (self , value ):
17+         self .head  =  Node (value , self .head )
18+             
19+     def  _printList (self ):
20+         node  =  self .head 
21+         while  node :
22+             print  node .value 
23+             node  =  node .next 
24+             
25+     def  _find (self , index ):
26+         prev  =  None 
27+         node  =  self .head 
28+         i  =  0 
29+         while  node  and  i  <  index :
30+             prev  =  node 
31+             node  =  node .next 
32+             i  +=  1 
33+         return  node , prev , i 
34+ 
35+     def  _delete (self , prev , node ):
36+         if  not  prev :
37+             self .head  =  node .next 
38+         else :
39+             prev .next  =  node .next 
40+     
41+     def  deleteNode (self , index ):
42+         node , prev , i  =  self ._find (index )
43+         if  index  ==  i :
44+             self ._delete (prev , node )
45+         else :
46+             print ('Node with index {} not found' .format (index ))
47+ 
48+     
49+ 
50+ if  __name__  ==  '__main__' :
51+     ll  =  LinkedList ()
52+     for  i  in  range (1 , 5 ):
53+         ll ._add (i )
54+         
55+     print ('The list is:' )
56+     ll ._printList ()
57+      
58+     print ('The list after deleting node with index 2:' )
59+     ll .deleteNode (2 )
60+     ll ._printList ()
    
 
   
 
     
   
   
          
     
  
    
     
 
    
      
     
 
     
    You can’t perform that action at this time.
  
 
    
  
     
    
      
        
     
 
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments