কে নেগেশনস লেটকোড সমাধানের পরে অ্যারের সর্বাধিক যোগ করুন


কাঠিন্য মাত্রা সহজ
প্রায়শই জিজ্ঞাসা করা হয় মর্দানী স্ত্রীলোক
বিন্যাস লেটকোড

কে নেগেশনস লেটকোড সমাধানের পরে এই পোস্টটি ম্যাক্সিমাইজ সামের অফ অ্যারেতে রয়েছে

সমস্যা বিবৃতি

সমস্যাটিতে "K এর পরে অ্যারে ম্যাক্সিমাইজ Sum নেতিবাচকতা”আমাদের একটি অ্যারে আরার এবং একটি মান কে দেওয়া হয়। অ্যারেটিতে পূর্ণসংখ্যার মান থাকে। আমরা আরারের মান [i] কে -আর [i] কে বারে পরিবর্তন করতে পারি। আমরা i এর মান পুনরাবৃত্তি করতে পারি। আমাদের কাজটি হ'ল এই পদ্ধতিটি কে ব্যবহার করে অ্যারে যোগফলকে সর্বাধিক করে তোলা এবং সংশোধন করার পরে মোট অ্যারে যোগফল প্রদান করা।

উদাহরণ

arr = [2,-3,-1,5,-4], k=2
13

ব্যাখ্যা:

কে নেগেশনস লেটকোড সমাধানের পরে অ্যারের পরিমাণ বাড়িয়ে তুলুন

প্রদত্ত অ্যারেতে যখন আমরা -3 থেকে 3 এবং -4 থেকে 4 প্রতিস্থাপন করব তখন অ্যারের মোট যোগফল 13 হবে।

অভিগমন

আমাদের কাজ অ্যারের যোগফল সর্বাধিক করুন এবং অ্যারেতে ইতিবাচক এবং নেতিবাচক উভয় উপাদানই রয়েছে তাই আমরা এই পদক্ষেপগুলি অনুসরণ করব:

  1. সবার আগে আমরা অ্যারে বাছাই করব কারণ আমরা ক্ষুদ্রতম মানের চিহ্নটি পরিবর্তন করতে চাই। এটি সর্বাধিককরণে কার্যকর হবে অ্যারের যোগফল.
  2.  এখন আমরা সর্বাধিক কে এর সাইন পরিবর্তন করব নেতিবাচক সংখ্যা.
  3. ইতিমধ্যে আমরা শূন্য অ্যারে উপস্থিত কিনা তাও নজর রাখব।
  4. খোঁজো অ্যারের যোগফল.
  5. আমাদের চূড়ান্ত উত্তর হবে অ্যারের যোগফল যদি:
    1. কে এর মান শূন্য হয়।
    2. জিরো অ্যারে উপস্থিত রয়েছে। এইভাবে আমরা শূন্যের চিহ্ন পরিবর্তন করতে থাকব।
    3. Negativeণাত্মক মানগুলির চিহ্ন পরিবর্তন করার পরে কে এর পুনরায় মূল্য দেওয়া সমান। এইভাবে আমরা নেতিবাচক সংখ্যায় একটি ধনাত্মক সংখ্যা করব এবং তারপরে এটি আবার ইতিবাচক করব।
  6. এখানে কে এর মান নেতিবাচক তাই আমরা এর সাইন পরিবর্তন করব ক্ষুদ্রতম ধনাত্মক সংখ্যা কে বার। এটি এটিকে নেতিবাচক করে তুলবে। এখন আমরা নতুন অ্যারের যোগফল ফিরিয়ে দেব।

কে নেগেশনস লেটকোড সলিউশন এর পরে অ্যারে ম্যাক্সিমাইজ Sum এর অ্যারে কোড

সি ++ কোড

#include <bits/stdc++.h> 
using namespace std; 
    int largestSumAfterKNegations(vector<int>& A, int K) {
        sort(A.begin(),A.end());
        int sum=0,neg=0,zero=0;
        for(int i=0;i<A.size();i++)
        {
            if(A[i]==0)
                zero=1;
            if(A[i]<0&&K>0)
            {  A[i]=-A[i];K--;}
            sum+=A[i];
        }
        if(zero||K==0||K%2==0)
         return sum;
        else
            return sum-2*(*min_element(A.begin(),A.end()));       
    }
int main() 
{ 
 vector<int> arr = {2,-3,-1,5,-4}; 
 int k=2;
 cout<<largestSumAfterKNegations(arr,k)<<endl; 
 return 0;
}
13

জাভা কোড

import java.util.Arrays; 
public class Tutorialcup {
    public static int largestSumAfterKNegations(int[] A, int K) {
        Arrays.sort(A);
        int sum=0,neg=0,zero=0;
        for(int i=0;i<A.length;i++)
        {
            if(A[i]==0)
                zero=1;
            if(A[i]<0&&K>0)
            {  A[i]=-A[i];K--;}
            sum+=A[i];
        }
        if(zero==1||K==0||K%2==0)
         return sum;
        else
            return sum-2*(Arrays.stream(A).min().getAsInt());      
    }
  public static void main(String[] args) {
    int [] arr = {2,-3,-1,5,-4}; 
    int k=2;
    int ans=  largestSumAfterKNegations(arr,k);
    System.out.println(ans);
  }
}
13

কে নেগেশনস লেটকোড সলিউশন এর পরে অ্যারের ম্যাক্সিমাইজ সামমের সমষ্টি জটিলতা বিশ্লেষণ

সময়ের জটিলতা

উপরের কোডটির সময় জটিলতা উপর) কারণ আমরা প্রদত্ত অ্যারেটি কেবল একবারই অতিক্রম করছি।

স্থান জটিলতা

উপরের কোডটির স্পেস জটিলতা ও (1) কারণ আমরা উত্তর সংরক্ষণের জন্য কেবল একটি পরিবর্তনশীল ব্যবহার করছি।

তথ্যসূত্র