Complete the method to find the minimal length of the sub sequence of consecutive elements of the sequence, sum of which is greater or equal to the specified number.
Example:
If the specified number is 15 in the sequence
5 + 1 + 3 + 5 + 10 > 15 (length is 5)
1+3+5+10 >= 15 (length is 4)
3+5+10 >= 15 (length is 3)
5 + 10 >= 15 (length is 2)
10 + 7 >=15(length is 2)
There is no element in the array whose value is >= 15 and hence the minimal length is 2
Example:
| 5 | 1 | 3 | 5 | 10 | 7 | 4 | 9 | 2 | 8 |
If the specified number is 15 in the sequence
5 + 1 + 3 + 5 + 10 > 15 (length is 5)
1+3+5+10 >= 15 (length is 4)
3+5+10 >= 15 (length is 3)
5 + 10 >= 15 (length is 2)
10 + 7 >=15(length is 2)
There is no element in the array whose value is >= 15 and hence the minimal length is 2
public static int FindMinimalLength(int[] array, int value)
{
//write code here
}
| UTC | Sample Input | Sample Output |
| 01 | array = {5,1,3,5,10,7,4,9,2,8}
value = 15 |
2 |
| 02 | array = {1,2,3,4,5}
value = 11 |
3 |
SOLUTION:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SumConsecutive
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter the length of array : ");
int i = int.Parse(Console.ReadLine());
int j = 0;
int[] arr = new int[i];
for (j = 0; j < i; j++)
{
Console.Write("arr[" + j + "]: ");
arr[j] = int.Parse(Console.ReadLine());
}
//Sorting the array
Boolean change = false;
Int32 temp = 0;
for (i = 0; i < arr.Length; i++)
{
for (j = 0; j < arr.Length - 1; j++)
{
if (arr[j] < arr[j + 1])
{
change = true;
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
if (!change)
{
break;
}
}
//reading value
Console.Write("Enter the value: ");
int value = int.Parse(Console.ReadLine());
//
change = true;
int sum = 0;
j = 0;
while (change)
{
if (sum + arr[j] > value)
{
change = false;
}
else
{
sum += arr[j];
j++;
}
}
j++;
Console.WriteLine("Minimum length: " + j);
}
}
}
No comments:
Post a Comment