1258. 漂亮子数组

1258. 漂亮子数组

中文English

漂亮子数组的定义是具有 numOdds 个奇数元素的任何长度的数组。 给定一个由整数组成的数组 nums 以及一个整数 numOdds,找出该数组中所有的漂亮子数组。 只要子数组的开始索引以及结束索引不一样,那么这两个子数组就不一样。返回漂亮子数组的数量。

样例

示例 1:
输入: 
nums = [1, 2, 3, 4, 5]
numOdds = 2
输出: 4
解释: 有4个子数组中含有两个奇数,例如:  [1, 2, 3], [1, 2, 3, 4], [2, 3, 4, 5], [3, 4, 5].
示例 2:
输入:
nums = [2, 4, 6, 8]
numOdds = 1
输出: 0
解释: 数组中没有奇数元素

注意事项

  • nums 的数组长度范围是: [1, 100000]
  • numOdds 的范围是: [1, 100000]
  • 保证返回的结果是int类型
输入测试数据 (每行一个参数)如何理解测试数据?
class Solution:
    """
    @param nums: an integer list
    @param numOdds: an integer
    @return: return the number of beautiful subarrays
    """
    '''
    大致思路:
    1.循环,如果内层循环c == numodds,则开始计数,在此条件下,如果下一个是奇数,则break,继续外层循环,直到最后
    '''
    def  BeautifulSubarrays(self, nums, numOdds):
        res = 0
        dic = []
        for  i in range(len(nums)-numOdds+1):
            c = 0
            for j in range(i,len(nums)):
                if nums[j]%2 == 1:
                    c += 1
                if c == numOdds:
                    res += 1
                elif c > numOdds:
                    break
        return res

注:lintcode未通过,时间复杂度问题,待优化。

 

posted @ 2020-04-25 13:53  风不再来  阅读(324)  评论(0编辑  收藏  举报