K نیگریشنز لیٹ کوڈ حل کے بعد صف کا زیادہ سے زیادہ جوڑ دیں


مشکل سطح آرام سے
اکثر پوچھا جاتا ہے ایمیزون
لڑی لیٹ کوڈ

K پوسٹس لیٹکوڈ سلوشن کے بعد یہ پوسٹ میکسائز سم آف اری پر ہے

مسئلہ یہ بیان

کے مسئلے میں K کے بعد صف کی زیادہ سے زیادہ رقم بات چیت”ہمیں ایک صف ارے اور ویلیو K دیئے جاتے ہیں۔ سرنی عددی اقدار پر مشتمل ہے۔ ہم تیر کی قیمت کو [i] سے -آرر [i] K اوقات میں تبدیل کرسکتے ہیں۔ ہم i کی قیمت دہرا سکتے ہیں۔ ہمارا کام یہ ہے کہ K کے اس طریق. کار کو بار بار استعمال کرکے صف کی رقم کو زیادہ سے زیادہ کیا جائے اور ترمیم کے بعد کل صفوں کی رقم واپس کردیں۔

مثال کے طور پر

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

وضاحت:

K نیگریشنز لیٹ کوڈ حل کے بعد صف کی زیادہ سے زیادہ رقم بنائیں

دیئے گئے صف میں جب ہم -3 سے 3 اور -4 سے 4 کی جگہ لیں گے تو صف کی کل رقم 13 ہوجائے گی۔

نقطہ نظر

ہمارا کام ہے صف کی زیادہ سے زیادہ رقم اور صف مثبت اور منفی دونوں عنصر پر مشتمل ہے لہذا ، ہم ان اقدامات پر عمل کریں گے:

  1. سب سے پہلے ہم صف کو ترتیب دیں گے کیوں کہ ہم سب سے چھوٹی قیمت کے نشان کو تبدیل کرنا چاہتے ہیں۔ یہ زیادہ سے زیادہ میں مفید ہوگا صف کی رقم.
  2.  اب ہم زیادہ سے زیادہ K کی علامت بدل دیں گے منفی تعداد.
  3. دریں اثنا ہم یہ بھی جان رکھیں گے کہ صفی صف میں موجود ہے یا نہیں۔
  4. تلاش کریں صف کی رقم.
  5. ہمارا آخری جواب ہوگا صف کی رقم اگر:
    1. K کی قیمت صفر ہوجاتی ہے۔
    2. صفر صف میں موجود ہے۔ اس طرح ہم صفر کے نشان کو بدلتے رہیں گے۔
    3. منفی اقدار کی علامت کو تبدیل کرنے کے بعد K کی باقی ماندہ قیمت برابر ہے۔ اس طرح ہم ایک مثبت تعداد کو منفی تعداد میں بنائیں گے اور پھر اسے دوبارہ مثبت بنائیں گے۔
  6. یہاں کے کی قیمت منفی ہے لہذا ہم سائن ان کریں گے سب سے چھوٹی مثبت تعداد K اوقات۔ اس سے یہ منفی ہوجائے گا۔ اب ہم نئی صف کی رقم واپس کریں گے۔

K Negations Leccode Solution کے بعد زیادہ سے زیادہ رقم کا مجموعہ کیلئے کوڈ

C ++ کوڈ

#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

لی نی کوکیشن لیٹکوڈ حل کے بعد کم سے کم رقم کے مجموعہ کا پیچیدہ تجزیہ

وقت کی پیچیدگی

مذکورہ کوڈ کی ٹائم پیچیدگی ہے اے (ن) کیونکہ ہم دیئے گئے صفوں کو صرف ایک بار عبور کر رہے ہیں۔

خلائی پیچیدگی

مذکورہ کوڈ کی جگہ کی پیچیدگی ہے O (1) کیونکہ ہم جوابات کو ذخیرہ کرنے کے لئے صرف متغیر کا استعمال کر رہے ہیں۔

حوالہ جات