Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> PHP

PHP प्रोग्राम: एरे में पहले 'n' मिसिंग नंबर ढूंढना


एरे में पहले 'n' मिसिंग नंबर ढूंढना

उदाहरण

<?php
function missing_values($my_arr, $len, $n) {
    sort($my_arr);
    // नोट: sort($my_arr, $len) गलत है, sort दूसरा पैरामीटर फ्लैग लेता है
    
    $i = 0;
    while ($i < $n && $my_arr[$i] <= 0) {
        $i++;
    }
    
    $count = 0;
    $curr = 1;
    
    while ($count < $n && $i < $len) {
        if ($my_arr[$i] != $curr) {
            echo $curr . " ";
            $count++;
        } else {
            $i++;
        }
        $curr++;
    }
    
    while ($count < $n) {
        echo $curr . " ";
        $curr++;
        $count++;
    }
}

$my_arr = array(6, 8, 0);
$len = sizeof($my_arr);
$n = 5;

print_r("The missing values of the array are ");
missing_values($my_arr, $len, $n);
?>

आउटपुट

The missing values of the array are 1 2 3 4 5

कोड विश्लेषण और सुधार

मूल कोड में कुछ समस्याएं हैं:

  1. sort($my_arr, $len) - sort का दूसरा पैरामीटर सॉर्ट फ्लैग होता है, लंबाई नहीं।
  2. $n और $k वेरिएबल मिक्स हैं।
  3. नेगेटिव नंबर्स हैंडल नहीं किए गए।

सुधारा गया संस्करण

<?php
function findMissingNumbers(array $arr, int $count): array {
    // पॉजिटिव नंबर्स को फिल्टर और सॉर्ट करें
    $positive = array_filter($arr, fn($x) => $x > 0);
    sort($positive);
    $positive = array_values($positive); // री-इंडेक्स
    
    $missing = [];
    $current = 1;
    $index = 0;
    $len = count($positive);
    
    while (count($missing) < $count) {
        if ($index < $len && $positive[$index] == $current) {
            // नंबर एरे में मौजूद है
            $index++;
            // डुप्लीकेट्स स्किप करें
            while ($index < $len && $positive[$index] == $current) {
                $index++;
            }
        } else {
            // नंबर मिसिंग है
            $missing[] = $current;
        }
        $current++;
    }
    
    return $missing;
}

$my_arr = [6, 8, 0, -1, 2, 2];
$missing = findMissingNumbers($my_arr, 5);
echo "Missing: " . implode(" ", $missing);
// आउटपुट: Missing: 1 3 4 5 7
?>

मुख्य सुधार

  • टाइप हिंट्स और रिटर्न टाइप जोड़े गए
  • नेगेटिव नंबर्स और डुप्लीकेट्स हैंडल किए गए
  • एरे के बजाय मानों की सरणी लौटाता है (अधिक उपयोगी)
  • क्लीनर लॉजिक और वेरिएबल नाम
  1. - PHP में सरणी से लापता तत्व ढूँढने का प्रोग्राम

    PHP में array_diff() और range() फ़ंक्शन्स का उपयोग करके एक संख्यात्मक सरणी में लापता (missing) तत्वों को आसानी से ढूंढा जा सकता है। उदाहरण <?php function absent($my_list) { $my_array = range(min($my_list), max($my_list)); return array_diff($my_array, $my_list); } echo Elements missing f

  1. - पायथन में सरणी में गायब सबसे कम संभव पूर्णांक खोजने का प्रोग्राम

    मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची है, हमें पहला गायब धनात्मक नंबर ढूंढना है। दूसरे शब्दों में, सबसे कम धनात्मक संख्या जो सरणी में मौजूद नहीं है। सरणी में डुप्लिकेट और नकारात्मक संख्याएं भी हो सकती हैं। उदाहरण के लिए, यदि इनपुट nums = [0,3,1] है, तो आउटपुट 2 होगा। इसे हल करने के लिए ह

  1. - पायथन में पहले n विषम संख्याओं का योग खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक संख्या n है, हमें पहले n धनात्मक विषम संख्याओं का योग ढूंढना है। उदाहरण के लिए, यदि इनपुट 7 है, तो आउटपुट 49 होगा क्योंकि [1+3+5+7+9+11+13] = 49। इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे: यदि n == 0, तो 0 वापस करें sum := 1, count := 0, temp := 1 जब तक count < n-1, क