## C# || How To Find Minimum Operations To Reduce X To Zero Using C#

The following is a module with functions which demonstrates how to find the minimum number of operations to reduce X to zero using C#.

1. Min Operations – Problem Statement

You are given an integer array nums and an integer x. In one operation, you can either remove the leftmost or the rightmost element from the array nums and subtract its value from x. Note that this modifies the array for future operations.

Return the minimum number of operations to reduce x to exactly 0 if it is possible, otherwise, return -1.

Example 1:

``` Input: nums = [1,1,4,2,3], x = 5 Output: 2 Explanation: The optimal solution is to remove the last two elements to reduce x to zero. ```

Example 2:

``` Input: nums = [5,6,7,8,9], x = 4 Output: -1 ```

Example 3:

``` Input: nums = [3,2,20,1,1,3], x = 10 Output: 5 Explanation: The optimal solution is to remove the last three elements and the first two elements (5 operations in total) to reduce x to zero. ```

2. Min Operations – Solution

The following is a solution which demonstrates how to find the minimum number of operations to reduce X to zero.

``` 2. Min Operations - Solution C# // ============================================================================ // Author: Kenneth Perkins // Date: Dec 25, 2023 // Taken From: http://programmingnotes.org/ // File: Solution.cs // Description: Demonstrates how to find the minimum operations reduce X // ============================================================================ public class Solution { public int MinOperations(int[] nums, int x) { var target = -x; foreach (int num in nums) { target += num; } // since all elements are positive, we have to take all of them if (target == 0) { return nums.Length; } var map = new Dictionary<int, int>(); map[0] = -1; var sum = 0; var res = int.MinValue; for (var index = 0; index < nums.Length; ++index) { sum += nums[index]; if (map.ContainsKey(sum - target)) { res = Math.Max(res, index - map[sum - target]); } // no need to check containsKey since sum is unique map[sum] = index; } return res == int.MinValue ? -1 : nums.Length - res; } }// http://programmingnotes.org/ 123456789101112131415161718192021222324252627282930313233343536 // ============================================================================//    Author: Kenneth Perkins//    Date:   Dec 25, 2023//    Taken From: http://programmingnotes.org///    File:  Solution.cs//    Description: Demonstrates how to find the minimum operations reduce X// ============================================================================public class Solution {    public int MinOperations(int[] nums, int x) {        var target = -x;        foreach (int num in nums) {            target += num;        }         // since all elements are positive, we have to take all of them        if (target == 0) {            return nums.Length;        }         var map = new Dictionary<int, int>();        map[0] = -1;        var sum = 0;        var res = int.MinValue;         for (var index = 0; index < nums.Length; ++index) {            sum += nums[index];            if (map.ContainsKey(sum - target)) {                res = Math.Max(res, index - map[sum - target]);            }            // no need to check containsKey since sum is unique            map[sum] = index;        }         return res == int.MinValue ? -1 : nums.Length - res;    }}// http://programmingnotes.org/ ```

QUICK NOTES:
The highlighted lines are sections of interest to look out for.

The code is heavily commented, so no further insight is necessary. If you have any questions, feel free to leave a comment below.

Once compiled, you should get this as your output for the example cases:

``` 2 -1 5 ```

## C# || How To Sort An Array By Parity Using C#

The following is a module with functions which demonstrates how to sort an array by parity using C#.

1. Sort Array By Parity – Problem Statement

Given an integer array nums, move all the even integers at the beginning of the array followed by all the odd integers.

Return any array that satisfies this condition.

Example 1:

``` Input: nums = [3,1,2,4] Output: [2,4,3,1] Explanation: The outputs [4,2,3,1], [2,4,1,3], and [4,2,1,3] would also be accepted. ```

Example 2:

``` Input: nums = [0] Output: [0] ```

2. Sort Array By Parity – Solution

The following is a solution which demonstrates how to sort an array by parity.

``` 2. Sort Array By Parity - Solution C# // ============================================================================ // Author: Kenneth Perkins // Date: Dec 1, 2023 // Taken From: http://programmingnotes.org/ // File: Solution.cs // Description: Demonstrates how to sort an array by parity // ============================================================================ public class Solution { public int[] SortArrayByParity(int[] nums) { var startIndex = 0; var endIndex = nums.Length -1; while (startIndex < endIndex) { if (IsOdd(nums[startIndex])) { var temp = nums[startIndex]; nums[startIndex] = nums[endIndex]; nums[endIndex] = temp; --endIndex; } else { ++startIndex; } } return nums; } private bool IsOdd(int num) { return num % 2 != 0; } }// http://programmingnotes.org/ 1234567891011121314151617181920212223242526272829 // ============================================================================//    Author: Kenneth Perkins//    Date:   Dec 1, 2023//    Taken From: http://programmingnotes.org///    File:  Solution.cs//    Description: Demonstrates how to sort an array by parity// ============================================================================public class Solution {    public int[] SortArrayByParity(int[] nums) {        var startIndex = 0;        var endIndex = nums.Length -1;         while (startIndex < endIndex) {            if (IsOdd(nums[startIndex])) {                var temp = nums[startIndex];                nums[startIndex] = nums[endIndex];                nums[endIndex] = temp;                --endIndex;            } else {                ++startIndex;            }        }        return nums;    }     private bool IsOdd(int num) {        return num % 2 != 0;    }}// http://programmingnotes.org/ ```

QUICK NOTES:
The highlighted lines are sections of interest to look out for.

The code is heavily commented, so no further insight is necessary. If you have any questions, feel free to leave a comment below.

Once compiled, you should get this as your output for the example cases:

``` [4,2,1,3] [0] ```