Saturday, October 5, 2024
Google search engine
HomeData Modelling & AICheck if its possible to make sum of the array odd with...

Check if its possible to make sum of the array odd with given Operations

Given an array arr[], the task is to check if it is possible to make the sum of array odd such that any two indices i and j can be chosen and arr[i] can be set equal to arr[j] given that i != j
Examples: 

Input: arr[] = { 5, 4, 4, 5, 1, 3 } 
Output: Yes 
Explanation: 
The sum of the array is 22. Put arr[0] = arr[1] where i=0 and j=1. The sum of this new array is 21 which is odd.
Input: arr[] = { 2, 2, 8, 8 } 
Output: No 
Explanation: 
Sum of the array is 20. 
The sum of the array cannot change to odd as all the elements are even. Adding even number to an even number always gives an even result. 

Approach: The idea is to find the sum of all the elements in the array and simultaneously checking the number of even and odd numbers present in the array. If the sum is even, then one of the even numbers can be replaced with an odd number thereby making the sum of the array odd. If there are no odd elements in the array, then the sum of the array cannot be made odd. 
Below is the implementation of the above approach:
 

C++




// C++ program to check if the array
// with odd sum is possible
#include <bits/stdc++.h>
using namespace std;
 
// Function to check if the
// sum of the array can be made odd.
bool isOdd(int arr[], int n)
{
    int l, r, flag = 0, flag1 = 0, sum = 0;
 
    // Find sum of all elements and increment
    // check for odd or even elements in the array
    // so that by changing ai=aj,
    // the sum of the array can be made odd
    for (int i = 0; i < n; i++) {
        sum += arr[i];
        if (arr[i] % 2 == 0 && flag == 0) {
            flag = 1;
            l = arr[i];
        }
        if (arr[i] % 2 != 0 && flag1 == 0) {
            r = arr[i];
            flag1 = 1;
        }
    }
 
    // If the sum is already odd
    if (sum % 2 != 0) {
        return true;
    }
 
    // Else, then both the flags should be checked.
    // Here, flag1 and flag represent if there is
    // an odd-even pair which can be replaced.
    else {
        if (flag1 == 1 && flag == 1)
            return true;
        else
            return false;
    }
}
 
// Driver code
int main()
{
    int ar[] = { 5, 4, 4, 5, 1, 3 };
    int n = sizeof(ar) / sizeof(ar[0]);
    bool res = isOdd(ar, n);
 
    if (res)
        cout << "Yes" << endl;
    else
        cout << "No" << endl;
    return 0;
}


Java




// Java program to check if the array
// with odd sum is possible
import java.io.*;
class GFG {
     
    // Function to check if the
    // sum of the array can be made odd.
    static boolean isOdd(int []arr, int n)
    {
        int l, r, flag = 0, flag1 = 0, sum = 0;
     
        // Find sum of all elements and increment
        // check for odd or even elements in the array
        // so that by changing ai=aj,
        // the sum of the array can be made odd
        for (int i = 0; i < n; i++) {
            sum += arr[i];
            if (arr[i] % 2 == 0 && flag == 0) {
                flag = 1;
                l = arr[i];
            }
            if (arr[i] % 2 != 0 && flag1 == 0) {
                r = arr[i];
                flag1 = 1;
            }
        }
     
        // If the sum is already odd
        if (sum % 2 != 0) {
            return true;
        }
     
        // Else, then both the flags should be checked.
        // Here, flag1 and flag represent if there is
        // an odd-even pair which can be replaced.
        else {
            if (flag1 == 1 && flag == 1)
                return true;
            else
                return false;
        }
    }
     
    // Driver code
    public static void main (String[] args)
    {
        int ar[] = { 5, 4, 4, 5, 1, 3 };
        int n = ar.length;
        boolean res = isOdd(ar, n);
     
        if (res == true)
            System.out.println("Yes");
        else
            System.out.println("No");
 
    }
}
 
// This code is contributed by AnkitRai01


Python3




# Python3 program to check if the array
# with odd sum is possible
 
# Function to check if the
# sum of the array can be made odd.
def isOdd(arr,  n) :
    flag = 0; flag1 = 0; sum = 0;
 
    # Find sum of all elements and increment
    # check for odd or even elements in the array
    # so that by changing ai=aj,
    # the sum of the array can be made odd
    for i in range(n) :
        sum += arr[i];
        if (arr[i] % 2 == 0 and flag == 0) :
            flag = 1;
            l = arr[i];
         
        if (arr[i] % 2 != 0 and flag1 == 0) :
            r = arr[i];
            flag1 = 1;
 
    # If the sum is already odd
    if (sum % 2 != 0) :
        return True;
 
    # Else, then both the flags should be checked.
    # Here, flag1 and flag represent if there is
    # an odd-even pair which can be replaced.
    else :
        if (flag1 == 1 and flag == 1) :
            return True;
        else :
            return False;
 
# Driver code
if __name__ == "__main__" :
 
    arr = [ 5, 4, 4, 5, 1, 3 ];
    n = len(arr);
     
    res = isOdd(arr, n);
 
    if (res) :
        print("Yes");
    else :
        print("No");
    
# This code is contributed by AnkitRai01


C#




// C# program to check if the array
// with odd sum is possible
using System;
 
class GFG{
    // Function to check if the
    // sum of the array can be made odd.
    static bool isOdd(int[] arr, int n)
    {
        int flag = 0, flag1 = 0, sum = 0;
     
        // Find sum of all elements and increment
        // check for odd or even elements in the array
        // so that by changing ai=aj,
        // the sum of the array can be made odd
        for (int i = 0; i < n; i++) {
            sum += arr[i];
            if (arr[i] % 2 == 0 && flag == 0) {
                flag = 1;
            }
            if (arr[i] % 2 != 0 && flag1 == 0) {
                flag1 = 1;
            }
        }
     
        // If the sum is already odd
        if (sum % 2 != 0) {
            return true;
        }
     
        // Else, then both the flags should be checked.
        // Here, flag1 and flag represent if there is
        // an odd-even pair which can be replaced.
        else {
            if (flag1 == 1 && flag == 1)
                return true;
            else
                return false;
        }
    }
     
    // Driver code  
    static public void Main ()
    {
        int[] ar = { 5, 4, 4, 5, 1, 3 };
        int n = ar.Length;
        bool res = isOdd(ar, n);
     
        if (res)
            Console.WriteLine("Yes");
        else
            Console.WriteLine("No");
    }
}
 
// This code is contributed by shivanisingh


Javascript




<script>
 
// Javascript program to check if the array
// with odd sum is possible
 
    // Function to check if the
    // sum of the array can be made odd.
    function isOdd(arr, n)
    {
        let l, r, flag = 0, flag1 = 0, sum = 0;
       
        // Find sum of all elements and increment
        // check for odd or even elements in the array
        // so that by changing ai=aj,
        // the sum of the array can be made odd
        for (let i = 0; i < n; i++) {
            sum += arr[i];
            if (arr[i] % 2 == 0 && flag == 0) {
                flag = 1;
                l = arr[i];
            }
            if (arr[i] % 2 != 0 && flag1 == 0) {
                r = arr[i];
                flag1 = 1;
            }
        }
       
        // If the sum is already odd
        if (sum % 2 != 0) {
            return true;
        }
       
        // Else, then both the flags should be checked.
        // Here, flag1 and flag represent if there is
        // an odd-even pair which can be replaced.
        else {
            if (flag1 == 1 && flag == 1)
                return true;
            else
                return false;
        }
    }
 
// Driver Code
 
          let ar = [ 5, 4, 4, 5, 1, 3 ];
        let n = ar.length;
        let res = isOdd(ar, n);
       
        if (res == true)
            document.write("Yes");
        else
            document.write("No");
     
</script>


Output: 

Yes

 

Time Complexity: O(N)
Auxiliary Space: O(1), As constant extra space is used.
 

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

Dominic Rubhabha-Wardslaus
Dominic Rubhabha-Wardslaushttp://wardslaus.com
infosec,malicious & dos attacks generator, boot rom exploit philanthropist , wild hacker , game developer,
RELATED ARTICLES

Most Popular

Recent Comments