. Menampal Array

PHPz
PHPzasal
2024-07-17 19:19:221092semak imbas

. Patching Array

330. Menampal Tatasusunan

Sukar

Memandangkan nombor tatasusunan integer diisih dan integer n, tambah/tampal elemen pada tatasusunan supaya sebarang nombor dalam julat [1, n] inklusif boleh dibentuk dengan hasil tambah beberapa elemen dalam tatasusunan.

Kembalikan bilangan tampalan minimum yang diperlukan.

Contoh 1:

  • Input: nombor = [1,3], n = 6
  • Output: 1
  • Penjelasan:
    • Gabungan nombor ialah [1], [3], [1,3], yang membentuk kemungkinan jumlah: 1, 3, 4.
    • Sekarang jika kita menambah/menampal 2 pada nombor, gabungannya ialah: [1], [2], [3], [1,3], [2,3], [1,2,3].
    • Jumlah yang mungkin ialah 1, 2, 3, 4, 5, 6, yang kini meliputi julat [1, 6].
    • Jadi kita hanya perlukan 1 tampalan.

Contoh 2:

  • Input: nombor = [1,5,10], n = 20
  • Output: 2
  • Penjelasan: Dua tampalan boleh menjadi [2, 4].

Contoh 3:

  • Input: nombor = [1,2,2], n = 5
  • Output: 0

Kekangan:

  • 1 <= nums.length <= 1000
  • 1 <= nums[i] <= 104
  • nums diisih dalam tertib menaik.
  • 1 <= n <= 231 - 1

Penyelesaian:

class Solution {

    /**
     * @param Integer[] $nums
     * @param Integer $n
     * @return Integer
     */
    function minPatches($nums, $n) {
        $ans = 0;
        $i = 0;
        $miss = 1;
         while ($miss <= $n) {
            if ($i < count($nums) && $nums[$i] <= $miss) {
                $miss += $nums[$i++];
            } else {
                $miss += $miss;
                ++$ans;
            }
        }
        return $ans;
    }
}

Pautan Kenalan

  • LinkedIn
  • GitHub

Atas ialah kandungan terperinci . Menampal Array. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn