# Solving Leetcode Interviews in Seconds with AI: Count Beautiful Splits in an Array


	# Introduction
	In this blog post, we will explore how to solve the LeetCode problem "3388" using AI. LeetCode is a popular platform for preparing for coding interviews, and with the help of AI tools like [Chatmagic](https://www.chatmagic.app), we can generate solutions quickly and efficiently - helping you pass the interviews and get the job offer without having to study for months.

	# Problem Statement
	> You are given an array nums. A split of an array nums is beautiful if:  The array nums is split into three subarrays: nums1, nums2, and nums3, such that nums can be formed by concatenating nums1, nums2, and nums3 in that order. The subarray nums1 is a prefix of nums2 OR nums2 is a prefix of nums3.  Return the number of ways you can make this split.   Example 1:  Input: nums = [1,1,2,1] Output: 2 Explanation: The beautiful splits are:  A split with nums1 = [1], nums2 = [1,2], nums3 = [1]. A split with nums1 = [1], nums2 = [1], nums3 = [2,1].   Example 2:  Input: nums = [1,2,3,4] Output: 0 Explanation: There are 0 beautiful splits.    Constraints:  1 <= nums.length <= 5000 0 <= nums[i] <= 50  

	# Explanation
	Here's the breakdown of the solution:

*   **Iterate through possible split points:** The code iterates through all possible splitting points of the array into three subarrays. Specifically, it chooses the end indices of the first and second subarrays.

*   **Check Prefix Condition:** For each possible split, it checks if either `nums1` is a prefix of `nums2` or `nums2` is a prefix of `nums3`.  A helper function `is_prefix` efficiently determines if one array is a prefix of another.

*   **Count Beautiful Splits:** The code maintains a counter to track the number of beautiful splits found and increments it whenever a valid split is identified.

*   **Time & Space Complexity:** O(n^3) time, O(1) space.

	
	# Code
	```python
	def is_prefix(arr1, arr2):
    """
    Checks if arr1 is a prefix of arr2.
    """
    if len(arr1) > len(arr2):
        return False
    for i in range(len(arr1)):
        if arr1[i] != arr2[i]:
            return False
    return True

def beautiful_splits(nums):
    """
    Calculates the number of beautiful splits of the input array.
    """
    n = len(nums)
    count = 0

    for i in range(1, n - 1):  # End index of nums1
        for j in range(i + 1, n):  # End index of nums2
            nums1 = nums[:i]
            nums2 = nums[i:j]
            nums3 = nums[j:]

            if is_prefix(nums1, nums2) or is_prefix(nums2, nums3):
                count += 1

    return count
	```
			
