K Negations Leetcode Solution အပြီးတွင် Array ၏ပမာဏကိုအမြင့်ဆုံးရရှိစေရန်


ခက်ခဲအဆင့် လွယ်ကူသော
မကြာခဏမေးတယ် အမေဇုံ
အခင်းအကျင်း LeetCode

ဤ post သည် K Negations Leetcode Solution ပြီးနောက် Array အမြင့်ဆုံးပမာဏဖြစ်သည်

ပြstatementနာကြေညာချက်

ပြproblemနာ၌ "K သည်ပြီးနောက် Array ကို၏ပမာဏကိုအမြင့်ဆုံး Negations"ကျွန်တော်တို့ကို array arr နဲ့တန်ဖိုးတစ်ခုပေးထားတယ်။ ဒီ array မှာကိန်းပြည့်ကိန်းတွေပါဝင်တယ်။ arr [i] တန်ဖိုးကို -arr [i] K ကြိမ်ပြောင်းနိုင်သည်။ i ရဲ့တန်ဖိုးကိုပြန်ပြောနိုင်တယ်။ ကျွန်ုပ်တို့၏တာဝန်မှာဒီနည်းလမ်းကို K ကြိမ်ကိုအသုံးပြုခြင်းအားဖြင့်ခင်းကျင်းမှုပေါင်းလဒ်ကိုတိုးမြှင့်ခြင်းနှင့်ပြုပြင်ခြင်းပြီးနောက်စုစုပေါင်းခင်းကျင်းပေါင်းလဒ်ကိုပြန်ပို့ခြင်းဖြစ်သည်။

နမူနာ

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

ရှင်းလင်းချက်:

K Negations Leetcode Solution ပြီးနောက် Array ပမာဏကိုအမြင့်ဆုံးရရှိအောင်ပြုလုပ်ပါ

၃ မှ ၃၊ -3 သို့ ၄ ကိုအစားထိုးသောအခါပေးထားသောခင်းကျင်းချက်တွင်စုစုပေါင်း ၁၃ သည်ရလိမ့်မည်။

ချဉ်းကပ်နည်း

ကျွန်တော်တို့ရဲ့တာဝန်ကရန်ဖြစ်ပါသည် အဆိုပါခင်းကျင်းပေါင်းလဒ်တိုးမြှင့် နှင့် array တွင်အပေါင်းနှင့်အနှုတ်လက္ခဏာနှစ်မျိုးလုံးပါဝင်ပါသည်။ ထို့ကြောင့်ကျွန်ုပ်တို့သည်ဤအဆင့်များကိုလိုက်နာပါမည်။

  1. ပထမ ဦး ဆုံးအနေဖြင့်ကျွန်ုပ်တို့သည်အသေးငယ်ဆုံးတန်ဖိုးသင်္ကေတကိုပြောင်းလဲလိုသောကြောင့် array ကိုစီရမည်။ ဤသည်တိုးမြှင့်အတွက်အသုံးဝင်ပါလိမ့်မည် ခင်းကျင်းပေါင်းလဒ်.
  2.  ယခုကျွန်ုပ်တို့သည်အမြင့်ဆုံး K ၏သင်္ကေတကိုပြောင်းလဲလိမ့်မည် အနှုတ်လက္ခဏာနံပါတ်များ.
  3. ဤအတောအတွင်းသုညသည်ခင်းကျင်းပြသခြင်းရှိ၊ မရှိကိုခြေရာခံသည်။
  4. အဆိုပါ Find ခင်းကျင်းပေါင်းလဒ်.
  5. ကျွန်ုပ်တို့၏နောက်ဆုံးအဖြေမှာဖြစ်လိမ့်မည် ခင်းကျင်းပေါင်းလဒ် ရှိလျှင်:
    1. K ၏တန်ဖိုးသည်သုညဖြစ်လာသည်။
    2. သုညဟာခင်းကျင်းထဲမှာပစ္စုပ္ပန်ဖြစ်ပါတယ်။ ဤနည်းဖြင့်ကျွန်ုပ်တို့သည်သုညသင်္ကေတကို ဆက်၍ ပြောင်းလဲသွားလိမ့်မည်။
    3. အနုတ်လက္ခဏာတန်ဖိုးနိမိတ်လက္ခဏာကိုပြောင်းလဲပြီးသည်နှင့် K တန်ဖိုးကိုပြန်လည်တွက်ချက်ခြင်းသည်ပင်ဖြစ်သည်။ ဤနည်းအားဖြင့်ကျွန်ုပ်တို့သည်အပေါင်းကိန်းသို့အပေါင်းဂဏန်းဖြစ်အောင်လုပ်ပြီးနောက်အပေါင်းထပ်မံပြုမည်။
  6. ဒီမှာ K တန်ဖိုးကအနုတ်ဖြစ်လို့ငါတို့သင်္ကေတကိုပြောင်းလိမ့်မယ် အသေးဆုံးအပြုသဘောဆောင်တဲ့ကိန်း K ကြိမ်။ ဒါကအနုတ်ဖြစ်စေလိမ့်မယ်။ အခုတော့ array အသစ် sum ကိုပြန်ပေးလိမ့်မယ်။

K Negations Leetcode Solution ပြီးနောက် Array ပမာဏအမြင့်ဆုံးအတွက် Code

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

ရှုပ်ထွေးမှုခွဲခြမ်းစိတ်ဖြာခြင်းကို K Negations Leetcode Solution ပြီးနောက် Array ပမာဏအမြင့်ဆုံးရရှိစေရန်

အချိန်ရှုပ်ထွေး

အထက်ပါကုဒ်၏အချိန်ရှုပ်ထွေးသည် အို (ဎ) ဘာလို့လဲဆိုတော့ငါတို့ကပေးထားတဲ့ခင်းကျင်းမှုကိုတစ်ကြိမ်တည်းသာဖြတ်သန်းနေလို့ပဲ

အာကာသရှုပ်ထွေးမှု

အပေါ်ကကုဒ်ရဲ့ရှုပ်ထွေးမှုက အို (၁) ဘာလို့လဲဆိုတော့ငါတို့ကအဖြေတွေကိုသိမ်းဖို့ variable တစ်ခုပဲသုံးတယ်။

ကိုးကား