Skip to main content

PHP code for finding distinct elements common to all rows of a matrix in O(n) time complexity

<?php

class Matrix{
/**
•@param 2D array $matrix
•
•Prints distinct elements common to all rows of the matrix */

        public static function getDistinctElementsCommonToAllRows($matrix){
                // A hash map to store count of elements 
                $hashmap = array();
                $selectedHash = array();
                $rows = count($matrix);
                $cols = count($matrix[0]);
                
                
                for ($i = 0; $i < $rows; $i++) { 
                        // Increment the count of first 
                        // element of the row
                        if(array_key_exists($matrix[$i][0],$hashmap)){        
                                $hashmap[$matrix[$i][0]] = $i+1; 
                        }

                        // Starting from the second element 
                        // of the current row 
                        for ($j = 1; $j < $cols; $j++) {         
                                // If current element is different from 
                                // the previous element i.e. it is appearing 
                                // for the first time in the current row
                                
                                if(array_key_exists($matrix[$i][$j],$hashmap)){
                                        if ($matrix[$i][$j] !== $matrix[$i][$j - 1]){        
                                                $hashmap[$matrix[$i][$j]] = $i+1;
                                        }
                                }else{                                
                                        if ($matrix[$i][$j] !== $matrix[$i][$j - 1]){        
                                                $hashmap[$matrix[$i][$j]] = $i;
                                        }
                                }        
                        }                
                }
                 
                foreach($hashmap as $key => $val){
                        if($val == $rows){
                                $selectedHash[] = $key;
                        }
                }
                return $selectedHash;
        }
}

$mat1 = [[2, 1, 4, 3],[1, 2, 3, 2],[3, 6, 2, 3],[5, 2, 5, 3]];

$mat2 = [[12, 1, 14, 3, 16],[14, 2, 1, 3, 35],[14, 1, 14, 3, 11],[14, 25, 3, 2, 1],[1, 18, 3, 21, 14]];


print_r (Matrix::getDistinctElementsCommonToAllRows($mat1));
Print_r('<br>');
print_r (Matrix::getDistinctElementsCommonToAllRows($mat2));

Comments

Popular posts from this blog

PHP code for finding Longest Repeated Substrings (LRS)

<?php Class LRS{ /** •@param array $texts •Prints longest repeated substrings for each text */ public static function getAllLRS($texts){ $stringArr = array(); foreach($texts as $string){ $stringArr[] = self::LongestRepeatedSubstring($string); } return $stringArr; } public function LongestRepeatedSubstring($string){ if ($string == null) return null; $string_length = strlen($string); $substrings = array(); for ($i=0; $i < $string_length; $i++){ $substrings[$i] = substr($string, $i); } sort($substrings); $result = ""; for ($i = 0; $i < $string_length - 1; $i++){ $lcs = self::LongestCommonString($substrings[$i], $substrings[$i ...

Write a function that checks if a given word stored in a doubly linked list is a palindrome.

<?php class Node { public $value; public $next = null; // next node public $prev = null; // previous node public function __construct($value) { $this->value = $value; } } class Palindrome { /** •@param string $word •@return bool */ public static function isPalindrome($head, $tail){ if ($head == null) return true; while ($head != $tail){ if ($head->value != $tail->value) return false; $head = $head->next; $tail = $tail->prev; } return true; } } $head = new Node(1); $firstNode = new Node(2); $secondNode = new Node(3); $tail = new Node(4); $head->next = $firstNode; $firstNode->prev = $head; $firstNode->next = $secondNode;...

What Make Facebook page load faster ?

Facebook has a “ Lazy Loading ” system they call “ BigPipe ” that helps the pages load fast. Facebook breaks each page down into sections they call “ Pagelets” , and using Javascript only load the most important Pagelets first then load the less important ones shortly afterward. And pipeline them through several execution stages inside web servers and browsers, as the modern microprocessor do to serve the various request in an order to increase the productivity. Big Pipe is totally implemented in PHP and javascript. By loading and rendering the main page structure first with minimal info on it, the page appears to load quicker than having to wait for a complete page to download and then render. To exploit the parallelism between web server and browser, BigPipe first breaks web pages into multiple chunks called pagelets. Just as a  pipelining microprocessor  divides an instruction’s life cycle into multiple stages (such as “instruction fetch”, “instruction decode”, ...