Given an array of n elements and an integer m, we need to write a program to find the number of contiguous subarrays in the array which contains exactly m odd numbers. Naive Approach : The naive approach is to generate all possible subarrays and simultaneously checking for the subarrays with m odd numbers. Efficient Approach: An efficient approach is to while traversing, compute the prefix[] array.

We increase the count of odd numbers if the array element is an odd one. Attention reader! If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.

See your article appearing on the GeeksforGeeks main page and help other Geeks. Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Writing code in comment? Please use ide. Python3 program to count the. Number of subarrays with. This code is contributed by mits. Python3 program to count the Number. This code is contributed 29Ajaykumar.

Recommended Posts: Even numbers at even index and odd numbers at odd index Differences between number of increasing subarrays and decreasing subarrays in k sized windows Count subarrays with same even and odd elements Split array into K disjoint subarrays such that sum of each subarray is odd. Check out this Author's contributed articles. Load Comments.

### Subarrays with distinct elements

Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. It only takes a minute to sign up. I am not able to prove it, can someone do it? A subarray is completely determined by the index of its first element and the index of the element that immediately follows its last element. We can access elements N-k-1 as the first array, then The r that does us is can be solved for :.

And therefore we can use the above logic to show that for any and ALL whole numbers N the formula works! This calculation can be seen as an arithmetic series i. Elaborating on Brian's answer, lets assume we count all the single character sub-strings.

There can be n such single character sub-string. Now let's assume we count all the sub-string that are not single character. So we can write. There we have the mathematical deduction. I kind of feel we do not need the fancy recurrence relation to get the final answer though. Sign up to join this community. The best answers are voted up and rise to the top. Home Questions Tags Users Unanswered. The total number of subarrays Ask Question. Asked 5 years, 6 months ago.

Active 5 months ago.Problem Description Given an array A of positive integers,call a contiguous,not necessarily distinct subarray of A good if the number of different integers in that subarray is exactly B. Sign Up using. Log In using. Toggle navigation. Subarrays with distinct integers! For example: [1, 2, 3, 1, 2] has 3 different integers 1, 2 and 3 Return the number of good subarrays of A. The first argument given is the integer array A.

The second argument given is an integer B. Return an integer denoting the number of good subarrays of A.

## Subarrays with distinct integers!

Output 1: 7 Output 2: 3. Explanation 1: Subarrays formed with exactly 2 different integers: [1, 2], [2, 1], [1, 2], [2, 3], [1, 2, 1], [2, 1, 2], [1, 2, 1, 2]. Explanation 2: Subarrays formed with exactly 3 different integers: [1, 2, 1, 3], [2, 1, 3], [1, 3, 4].

A sub-array is a contiguous subsequence, or slice, of an array. Distinct means different contents; for example:. Time needed to construct suffix tree is O n with proper algorithm Ukkonen's or McCreight's algorithms. Time needed to traverse the tree and add together lengths is also O n.

Apparently there are some discussion about the complexity. I foud a way to do it: if you retrieve a sub-array of size n, then each sub-arrays of size inferior to n will already be added. With a list containing the same patern many time the number of iteration and comparison will be quite low.

For your example [1, 2, 1, 2], the line if! It only raise to 36 for the input [1, 2, 1, 2, 1, 2, 1, 2] that contains 15 different sub-arrays. I guess the answer would be to generate them all and then remove duplicates. Or if you are using a language like Java with a set object make all the arrays and add them to a set of int[]. Sets only contain one instance of each element and automatically remove duplicates so you can just get the size of the set at the end. The second is to use some sort of probable match and then drill down from there Create an array of pair where each pair store the value of the element of subarray and its index.

Sort the pair in increasing order of A[i] and then decreasing order of i. From index 6 we can have two sub-arrays  and [1,3]. Taking pair and pairpair has index 0. We can have 8 sub-arrays beginning from index 0. But two subarrays  and [1,3] are already counted. So to remove them, we need to compare longest common prefix of sub-array for pair and pair. So longest common prefix length for indices beginning from 0 and 6 is 2 i. So now new distinct sub-arrays will be [1,3,6].

The sorting part takes O n logn. Its the best I could get. You can see that we dont need pair for this. The first value of pair, value of element was not required. I used this for better understanding. You can always skip that. Learn more. Number of Distinct Subarrays Ask Question. Asked 7 years, 3 months ago. Active 7 years, 3 months ago. Viewed 4k times. I want to find an algorithm to count the number of distinct subarrays of an array.

Distinct means different contents; for example:  from A[] and  from A[] are not distinct.Given an array arr[] of size N and an integer K. The task is to find the count of subarrays such that each subarray has exactly K distinct elements. Approach: To directly count the subarrays with exactly K different integers is hard but to find the count of subarrays with at most K different integers is easy.

So the idea is to find the count of subarrays with at most K different integers, let it be C Kand the count of subarrays with at most K — 1 different integers, let it be C K — 1 and finally take their difference, C K — C K — 1 which is the required answer. Count of subarrays with at most K different elements can be easily calculated through the sliding window technique. The idea is to keep expanding the right boundary of the window till the count of distinct elements in the window is less than or equal to K and when the count of distinct elements inside the window becomes more than Kstart shrinking the window from the left till the count becomes less than or equal to K.

Attention reader! If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute. See your article appearing on the GeeksforGeeks main page and help other Geeks. Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below. Writing code in comment? Please use ide. Python3 implementation of the above approach.

Function to return the count of subarrays. To store the result. Left boundary of window. Right boundary of window. Map to keep track of number of distinct.

Loop to calculate the count. Calculating the frequency of each. Shrinking the window from left if the. Adding the count of subarrays with at most. K distinct elements in the current window. Count of subarrays with exactly k distinct.

## Count of subarrays having exactly K distinct elements

This code is contributed by AnkitRai ContainsKey arr[right]. Add arr[right], 1. ContainsKey arr[left]. Remove arr[left] .Given an array of n integers. Count total number of sub-array having total distinct elements same as that of total distinct elements of original array.

A Naive approach is to run a loop one inside another and consider all sub-arrays and for every sub-array count all distinct elements by using hashing and compare it with total distinct elements of original array. This approach takes O n 2 time.

An efficient approach is to use sliding window to count all distinct elements in one iteration. This article is contributed by Shubham Bansal. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Attention reader! Writing code in comment? Please use ide. Python3 program Count total number of. Function to calculate distinct sub-array. Count distinct elements in whole array. Reset the container by removing. Use sliding window concept to find. If window size equals to array distinct. Decrease the frequency of previous. If frequency is zero then decrease. This code is contributed by. ContainsKey arr[i]. Add arr[i], 1. Clear.

### Count distinct Bitwise OR of all Subarrays

ContainsKey arr[right]. Add arr[right], 1. ContainsKey arr[left]. WriteLine countDistictSubarray arr, arr. Length.

Count Distinct Elements in Every Window of Size K

Improved By : mohit kumar 29princiraj Load Comments. We use cookies to ensure you have the best browsing experience on our website.Given an array A of non-negative integers, where.

The task is to count number of distinct possible results obtained by taking the bitwise OR of all the elements in all possible Subarrays.

Approach: The Naive approach is to generate all possible subarrays and take bitwise OR of all elements in the subarray. Store each result in set and return length of the set. Efficient Approach: We can make the above approach better. At the kth step, say we have all of the res i, k in some set pre. Below is the implementation of above approach. Attention reader! If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below. Writing code in comment? Please use ide. How to change the output of printf in main? These Bitwise OR of subarrays are 1, 2, 3. There are 3 distinct values, so the answer is 3. Python implementation of the above approach.

Check out this Author's contributed articles. Load Comments. We use cookies to ensure you have the best browsing experience on our website.