w3resource logo
php Programming Exercies

PHP Challenges: Find a single element in an array where every element appears three times except for one

PHP Challenges - 1: Exercise-10 with Solution

Write a PHP program to find a single element in an array where every element appears three times except for one.

Input : array(5, 3, 4, 3, 5, 5, 3)

Explanation :

PHP: Find the single element in an array where every element appears three times except for one

Sample Solution :

PHP Code :

<?php
function single_number($arr)
{
   $ones = 0;
   $twos = 0;
   $common_one_two = 0;
       for($i=0; $i<sizeof($arr); $i++)
       {
           $twos  = $twos | ($ones & $arr[$i]);
            
            $ones  = $ones ^ $arr[$i];
             $common_one_two = ~($ones & $twos);
             $ones &= $common_one_two;
             $twos &= $common_one_two;                    
       }
     return $ones;
}
$arr1 = array(5, 3, 4, 3, 5, 5, 3);
$arr2 = array(-1, 1, 1, -1, -1, 1, 0);
print_r($arr1);
print_r('Single Number: '.single_number($arr1)."\n");
print_r($arr2);
print_r('Single Number: '.single_number($arr2)."\n");
?>

Sample Output:

Array                                                       
(                                                           
    [0] => 5                                                
    [1] => 3                                                
    [2] => 4                                                
    [3] => 3                                                
    [4] => 5                                                
    [5] => 5                                                
    [6] => 3                                                
)                                                           
Single Number: 4                                            
Array                                                       
(                                                           
    [0] => -1                                               
    [1] => 1                                                
    [2] => 1                                                
    [3] => -1                                               
    [4] => -1 
	[5] => 1                                                
    [6] => 0                                                
)                                                           
Single Number: 0    

Flowchart:

PHP Flowchart: Find the single element in an array where every element appears three times except for one

PHP Code Editor:

<?php
function single_number($arr)
{
   $ones = 0;
   $twos = 0;
   $common_one_two = 0;
       for($i=0; $i<sizeof($arr); $i++)
       {
           $twos  = $twos | ($ones & $arr[$i]);
            
            $ones  = $ones ^ $arr[$i];
             $common_one_two = ~($ones & $twos);
             $ones &= $common_one_two;
             $twos &= $common_one_two;                    
       }
     return $ones;
}
$arr1 = array(5, 3, 4, 3, 5, 5, 3);
$arr2 = array(-1, 1, 1, -1, -1, 1, 0);
print_r($arr1);
print_r('Single Number: '.single_number($arr1)."\n");
print_r($arr2);
print_r('Single Number: '.single_number($arr2)."\n");
?>

Improve this sample solution and post your code through Disqus