Base condition if array size is one return the first value.
Initialize sum variable to 0.
Iterate the array and update sum variable to contain sum of array elements.
Code
class Solution { //Function to find maximum circular subarray sum. circularSubarraySum(a, N){ // Corner Case if (N == 1) return a[0]; // Initialize sum variable which store total sum of the array. let sum = 0; for (let i = 0; i < N; i++) { sum += a[i]; } // Initialize every variable with first value of array. let curr_max = a[0], max_so_far = a[0], curr_min = a[0], min_so_far = a[0]; // Concept of Kadane's Algorithm for (let i = 1; i < N; i++) { // Kadane's Algorithm to find Maximum subarray sum. curr_max = Math.max(curr_max + a[i], a[i]); max_so_far = Math.max(max_so_far, curr_max); // Kadane's Algorithm to find Minimum subarray sum. curr_min = Math.min(curr_min + a[i], a[i]); min_so_far = Math.min(min_so_far, curr_min); } if (min_so_far == sum) return max_so_far; // returning the maximum value return Math.max(max_so_far, sum - min_so_far); } }