සමාන අරා මූලද්‍රව්‍ය ලීට්කෝඩ් විසඳුම සඳහා අවම පියවර


දුෂ්කරතා මට්ටම පහසු
නිතර අසනු ලැබේ ඇමේසන් Apple ජංගම දුරකථන Coursera ෆැක්ට්සෙට් ඇත්ත වශයෙන්ම ජේපී මෝගන් ගණිතය මයික්රොසොෆ්ට් Swiggy
දිනුම් ඇදීම ගණිතය

ගැටළු ප්රකාශය

මෙම ගැටලුවේදී අපට ලබා දී ඇත්තේ අ අරාව නිඛිලවල. එසේම, මෙම අරාව මත යම් මෙහෙයුම් සමූහයක් සිදු කිරීමට අපට අවසර ඇත. එක් මෙහෙයුමක දී, අපට අරාවෙහි ඇති මූලද්‍රව්‍ය 1 කින් වැඩි කළ හැකිය ”n - 1 (ඕනෑම එකක් හැර අනෙක් සියලුම අංග).

සියලුම අරාව මූලද්‍රව්‍ය සමාන කිරීමට අවශ්‍ය අවම මෙහෙයුම් ගණන අප විසින් සොයාගත යුතුය.

උදාහරණයක්

Array = {1 , 2 , 3}
3
Array = {1 , 1 , 1}
0

 

සමාන අරා මූලද්‍රව්‍ය ලීට්කෝඩ් විසඳුම සඳහා අවම පියවරප්‍රවේශය (ගණිතය)

මෙම ගැටළුව තුළ, සියලු අරාව මූලද්‍රව්‍යයන්ට සමාන වන පරිදි ඔබ 1 කින් වැඩි කිරීමට කැමති සංඛ්‍යා සමූහයක් තෝරා ගැනීම දුෂ්කර ය. කෙසේවෙතත්, අරාවෙහි 'N - 1' මූලද්‍රව්‍ය වැඩි කිරීම එක් අරාව මූලද්‍රව්‍යයක් 1 කින් අඩු කිරීමට සමාන වේ. මෙයට හේතුව, සියලු මූලද්‍රව්‍ය සමාන වූ පසු ඒවායේ වටිනාකම කුමක් දැයි සොයා ගැනීමට අප අකමැති වීමයි, ඒ වෙනුවට අපි චලනයන් ගණන සොයා ගැනීමට උනන්දු වෙමු. දැන්, මෙය අර්ථවත් වන්නේ අපගේ මෙහෙයුම අරාවෙහි එක් මූලද්‍රව්‍යයක් හරියටම 1 කින් අඩු කිරීම නිසා, අපි අරාවෙහි ඇති සියලුම මූලද්‍රව්‍යයන් අරාවෙහි ඇති අවම මූලද්‍රව්‍යය බවට පරිවර්තනය කළ යුතුය (එය අඩු කිරීමට අවශ්‍ය නොවන බැවින් තව දුරටත්).

සමාන අරා මූලද්‍රව්‍ය ලීට්කෝඩ් විසඳුම සඳහා අවම පියවරයන් ක්‍රියාත්මක කිරීම

සී ++ වැඩසටහන

#include <bits/stdc++.h>

using namespace std;

int minMoves(vector <int> nums) {
    int mn = *min_element(nums.begin() , nums.end()) , moves = 0;
    for(int &i : nums)
        moves += i - mn;
    return moves;
}

int main() {
    vector <int> nums = {1 , 2 , 3};
    cout << minMoves(nums) << endl;
    return 0;
}

ජාවා වැඩසටහන

import java.lang.*;
import java.util.*;

class min_moves {
    public static void main(String args[]) {
        int[] nums = {1 , 2 , 3};
        System.out.println(minMoves(nums));
    }

    public static int minMoves(int[] nums) {
        if(nums.length == 0)
            return 0;
        int mn = nums[0];
        for(int i = 0 ; i < nums.length ; i++) {
            mn = Math.min(mn , nums[i]);
        }

        int moves = 0;
        for(int i = 0 ; i < nums.length ; i++) {
            moves += nums[i] - mn;
        }

        return moves;
    }
}
3

සමාන අරා මූලද්‍රව්‍ය ලීට්කෝඩ් විසඳුම සඳහා අවම පියවරයන්ගේ සංකීර්ණ විශ්ලේෂණය

කාල සංකීර්ණත්වය

මත), N = අරාවේ ප්‍රමාණය. අපි මුළු අරා එක වරක් ගමන් කරමු.

අභ්‍යවකාශ සංකීර්ණතාව 

ඕ (1), අපි අරාවෙහි නිරන්තර මතක අවකාශය භාවිතා කරන බැවින්.