Minimum bərabər massiv elementlərinə keçid LeetCode Həlli

Çətinlik səviyyəsi Mühit
Tez-tez soruşulur Çiy kərpic Amazon alma Bloomberg Expedia Məlumat dəsti Goldman Sachs JPMorgan Riyaziyyat microsoft Morgan Stanley Swiggy cuqquldamaq VizaBaxılıb 53

Sistem dizaynı ilə bağlı müsahibə sualları o qədər açıq ola bilər ki, düzgün hazırlaşmağı bilmək çox çətindir. İndi satın aldıqdan sonra Amazon, Microsoft və Adobe-nin dizayn dövrlərini sındıra bilirəm Bu kitabı. Gündəlik bir yenidən nəzərdən keçirin dizayn sualı və söz verirəm ki, dizayn dövrünü sındıra bilərsiniz.

Problem bəyanat

Minimum Hərəkətlər Bərabər Massiv Elementlərinə LeetCode Həlli – Tam ədəd massivi verilmişdir nums ölçüdə n, qayıt bütün massiv elementlərini bərabərləşdirmək üçün tələb olunan minimum hərəkət sayı.

Bir hərəkətlə siz artıra bilərsiniz n - 1 tərəfindən massiv elementləri 1.

Misal 1:

Giriş 1:

ədədlər = [1, 2, 3]

Çıxış:

3

Explanation:

Yalnız 3 hərəkət lazımdır. Hər bir hərəkətdə (n-1) ~ (3-1) = 2 elementi artıra bilərik.Minimum bərabər massiv elementlərinə keçid LeetCode Həlli

Yanaşma:

  • Elementləri bərabərləşdirmək üçün biz elementlər arasında fərq yaratmalıyıq min element və maksimum element massivdə 0-ə bərabərdir.
  • Hər bir hərəkətdə hamını artıra bilərik n-1 elementləri bir. Biz heç vaxt gücümüzü artırmağı seçməməliyik maksimum element, buna görə də biz seçirik cari maksimum elementimizdən başqa digər elementləri artırınarasında fərqi azaltmaq deməkdir maksimum element və min element biri ilə.
  • Beləliklə, hər bir hərəkətdə cərəyanı azaltmalıyıq maksimum element hər bir elementi istifadə etmək üçün a min element.
  • Problem arasındakı fərqi saymaq olur digər elementlər ilə bizim min elementimiz massivdə.
  • Misal üçün: nums = [1, 2, 3]
    • Addım 1, maksimum element istisna olmaqla, digər elementləri artırın 3nums = [2, 3, 3]
    • Addım 2, maksimum element istisna olmaqla, digər elementləri artırın, nums = [3, 4, 3].
    • Addım 3, maksimum element istisna olmaqla, digər elementləri artırın, nums = [4, 4, 4].

Bərabər massiv elementlərinə minimum köçürmə kodu

Java kodu

class Solution {
    public int minMoves(int[] nums) {
        int min = nums[0];
        for (int x : nums) min = Math.min(min, x);
        int ans = 0;
        for (int x : nums) 
            ans += x - min;
        return ans;
    }
}

Python kodu

class Solution:
    def minMoves(self, nums: List[int]) -> int:
        mi = min(nums)
        ans = 0
        for x in nums:
            ans += x - mi
        return ans

Bərabər Massiv Elementlərinə Minimum Hərəkətlər üçün Mürəkkəblik Təhlili LeetCode Həlli

Zamanın mürəkkəbliyi

O (N), burada N <= 10^5 giriş massivinin uzunluğudur.

Kosmik Mürəkkəblik

O (1), çünki biz daimi məkandan istifadə edirik.

Referans: https://en.wikipedia.org/wiki/Array_data_structure

Crack Sistemi Dizayn Müsahibələri
Translate »