I think you have misunderstood my question. I need the algorithm to produce 
the longest subarray that is greater than the average. For example if the 
array is  1 10 -1 -1 4 -1 7 2 8 and k = 5 then the correct answer is 3 with 
the subarray being 7 2 8 .Your algorithm will produce a false since it does 
the division 29/6 that is lower than k = 5 . 

Τη Τρίτη, 20 Νοεμβρίου 2012 8:28:33 μ.μ. UTC+2, ο χρήστης Sachin Chitale 
έγραψε:
>
> Sorry Koup,
> Plz ignore previous code, it has errors use below code
> public class Kadanes {
> static int maxAvgSum(int a[], int k) {
> int max_so_far = 0, max_ending_here = 0, c = 0;
>  boolean flag=false;
>  for (int i = 0; i < a.length; i++) {
>  max_ending_here = max_ending_here + a[i];
> if (max_ending_here < 0)
> max_ending_here = 0;
>  if (max_so_far < max_ending_here) {
> max_so_far = max_ending_here;
> c++;
>  }
>
> }
> if(max_so_far>0){
>   flag = (max_so_far / c) > k ? true : false;
>  }
>
> System.out.println(flag);
>
> return max_so_far;
>  }
>
> public static void main(String[] args) {
>
> int[] a = { -5, 6, 2, 100, 80 };
>  System.out.println(maxAvgSum(a, 13));
> }
> }
>
> expln http://www.geeksforgeeks.org/archives/576
>
>
> On Tue, Nov 20, 2012 at 11:37 PM, Sachin Chitale 
> <sachinc...@gmail.com<javascript:>
> > wrote:
>
>> Koup, your target should be to get contiguous array which hcodeas max sum.
>> Then find out average and check whether its greater than given number
>> check out below code.
>>
>> public class Kadanes {
>>  static int maxAvgSum(int a[],int k) {
>> int start, end, sum, curSum = 0;
>> start = end = -1;
>>  sum = 0;
>> for (int i = 0; i < a.length; i++) {
>>
>> if (a[i] > 0) {
>>  if (sum == 0) {
>> start  = i;
>> } 
>> sum += a[i];
>>  end = i;
>>  } else {
>> curSum = sum + a[i];
>>  if (curSum < 0) {
>> start = end = -1;
>> sum = 0;
>>  } else {
>> sum = curSum;
>> }
>> }
>>  }
>> boolean flag=(sum/(end-start+1))>k?true:false;
>>  System.out.println(start + " : " + end+" : "+ flag);
>>
>> return sum;
>>  }
>>
>> It's in Java returning max sum.
>> Thanks,
>> Sachin
>>
>>
>> On Tue, Nov 20, 2012 at 10:58 PM, Koup <anasta...@gmail.com <javascript:>
>> > wrote:
>>
>>> Yeah i have worked on modifying that algorithm for some hours.But I have 
>>> problem when the sum is negative but the next element is a positive integer 
>>> that will make my sum correct. In that case the algorithm makes my sum zero 
>>> cause it was negative. Any help on that?
>>>
>>>
>>> On Tuesday, November 20, 2012 7:17:32 PM UTC+2, Sachin Chitale wrote:
>>>
>>>> Use Kadane's algorithm to solve this with time complexity O(n) and 
>>>> Space O(1)
>>>> http://www.algorithmist.com/**index.php/Kadane's_Algorithm<http://www.algorithmist.com/index.php/Kadane's_Algorithm>
>>>>
>>>> Need to modify a bit.
>>>>
>>>>
>>>> -- 
>>>> Regards,
>>>> Sachin Chitale
>>>> Application Engineer SCJP, SCWCD
>>>> Contact# : +91 8086284349, 9892159511
>>>> Oracle Corporation
>>>>
>>>> On Tue, Nov 20, 2012 at 10:43 PM, Koup <anasta...@gmail.com> wrote:
>>>>
>>>>> Consider an array of N integers. Find the longest contiguous subarray 
>>>>> so that the average of its elements is greater than a given number k 
>>>>>
>>>>> I know the general brute force solution in O(N^2). Is there any 
>>>>> efficient solution using extra space?
>>>>>
>>>>> -- 
>>>>>  
>>>>>  
>>>>>
>>>>
>>>>
>>>>
>>>>   -- 
>>>  
>>>  
>>>
>>
>>
>>
>> -- 
>> Regards,
>> Sachin Chitale
>> Application Engineer SCJP, SCWCD
>> Contact# : +91 8086284349, 9892159511
>> Oracle Corporation
>>  
>
>
>
> -- 
> Regards,
> Sachin Chitale
> Application Engineer SCJP, SCWCD
> Contact# : +91 8086284349, 9892159511
> Oracle Corporation
>  

-- 


Reply via email to