• 【C语言刷LeetCode】1248. 统计「优美子数组」(M)


    给你一个整数数组 nums 和一个整数 k。如果某个连续子数组中恰好有 k 个奇数数字,我们就认为这个子数组是「优美子数组」。

    请返回这个数组中 「优美子数组」 的数目。

    示例 1:

    输入:nums = [1,1,2,1,1], k = 3
    输出:2
    解释:包含 3 个奇数的子数组是 [1,1,2,1] 和 [1,2,1,1] 。
    示例 2:

    输入:nums = [2,4,6], k = 1
    输出:0
    解释:数列中不包含任何奇数,所以不存在优美子数组。
    示例 3:

    输入:nums = [2,2,2,1,2,2,1,2,2,2], k = 2
    输出:16
     

    提示:

    1 <= nums.length <= 50000
    1 <= nums[i] <= 10^5
    1 <= k <= nums.length

    来源:力扣(LeetCode)
    链接:https://leetcode.cn/problems/count-number-of-nice-subarrays
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    一开始肯定想到的是滑动窗口,但应该会超时,于是想到525这道题525. 连续数组(M),把奇数偶数转换一下变成0和1,接着发现跟560这道题一模一样了560. 和为 K 的子数组,前缀和+uthash.

    1. ypedef struct {
    2. int key; // 存放前缀和
    3. int val; // 存放次数
    4. UT_hash_handle hh;
    5. } UT_HASH;
    6. int numberOfSubarrays(int* nums, int numsSize, int k){
    7. int ret= 0;
    8. int i;
    9. int preSum = 0;
    10. UT_HASH *hash_table = NULL;
    11. UT_HASH *tmp = malloc(sizeof(UT_HASH));
    12. int fkey;
    13. tmp->key = 0;
    14. tmp->val = 1;
    15. HASH_ADD_INT(hash_table, key, tmp); // 存入0当首个元素
    16. // 求余2的前缀和
    17. for (i = 0; i < numsSize; i++) {
    18. preSum += nums[i] % 2;
    19. fkey = preSum - k;
    20. tmp = NULL;
    21. HASH_FIND_INT(hash_table, &fkey, tmp); // 查找 preSum-k,找到了即优美子数组
    22. if (tmp != NULL) {
    23. ret += tmp->val;
    24. printf("h1,i=%d,ret=%d,preSum=%d,tmp->val=%d\n",i,ret,preSum,tmp->val);
    25. }
    26. tmp = NULL;
    27. HASH_FIND_INT(hash_table, &preSum, tmp); // 查找自身
    28. if (tmp != NULL) {
    29. tmp->val += 1;
    30. } else {
    31. UT_HASH *new = malloc(sizeof(UT_HASH));
    32. new->key = preSum;
    33. new->val = 1;
    34. HASH_ADD_INT(hash_table, key, new); // 没找到就加入
    35. }
    36. }
    37. return ret;
    38. }

  • 相关阅读:
    ajax笔记五
    【UE 粒子练习】03——创建一个GPU粒子
    电商小程序实战教程-订单管理
    Linux学习笔记(二)
    【Educoder数据挖掘实训】异常值检测-箱线图
    Bean 作用域和生命周期
    element ui 中文离线文档(百度云盘下载)
    前端vite打包工具
    Ubuntu 20.04 安装部署 TiDB DM v7.3.0 集群【全网独家】
    2021-08-25-Tomcat服务器与HTTP协议
  • 原文地址:https://blog.csdn.net/jin615567975/article/details/125495149