Given an array of integers, find the subarray with smallest sum. Return the sum of the subarray.

public class Solution {
    /**
     * @param nums: a list of integers
     * @return: A integer indicate the sum of minimum subarray
     */
    public int minSubArray(ArrayList<Integer> nums) {
        if (nums == null || nums.size() == 0) return 0;

        int min = Integer.MAX_VALUE, local = 0;
        for (int num : nums) {
            local = Math.min(local + num, num);
            min = Math.min(min, local);
        }
        return min;
    }
}
class Solution:
    """
    @param: nums: a list of integers
    @return: A integer indicate the sum of minimum subarray
    """
    def minSubArray(self, nums):
        # write your code here
        if not nums:
            return 0

        ret = 2 ** 31 - 1
        summation = 0
        for num in nums:
            summation = min(summation + num, num)
            ret = min(ret, summation)
        return ret