思路:这个题用数学方法还是挺容易想通,左右指针l,r分别指向符合count==k的子数组的两个奇数端点,统计l左边的偶数(包括l)和r右边的偶数(包括r),那么res+=二者的乘积;然后将l++,r++,对下一个符合条件的子数组进行同样的操作,大致思想就是这样;

int numberOfSubarrays(vector<int> &nums, int k)
{int len = nums.size();int l = 0, r = 1;int count = 0, count_left = 0, count_right = 0;int res = 0;bool flag = true;while (true){//首先找到两个首尾端奇数,分别用l,r指向while (!(nums[l] & 1) && l < len){l++;count_left++;}count_left++; //包括这个奇数if (l == len){return res;}else{l++; //l指向奇数后一个数if (flag){r = l;count = 1;}while (r < len && count < k){if (nums[r] & 1){count++;}r++;}if (r == len){if (count == k)res += count_left;return res;}else //现在是count==k 并且nums[r]为奇数{count_right = 1;while (!(nums[r] & 1) && r < len){r++;count_right++;}//此时r指向奇数后的一个数 或者 结尾res += count_right * count_left;if (r == len)return res;else{count--;count_right = 0;count_left = 0;flag = false;}}}}return res;
}

Leetcode每日一题:1248.count-number-of-nice-subarrays(统计[优美子数组])相关推荐

  1. Leetcode每日一题:38.Count and Say(外观数列)

    看题目着实难懂,评论老哥帮忙找答案,可以这么理解: 题目的意思是对序列前一个数进行报数,数列第一项为1,那第二项就报第一项的有1个1,输出11,然后第三项就在第二项的基础上报数,第二项是11,第三项不 ...

  2. 【LeetCode每日一题】1723. 完成所有工作的最短时间

    [LeetCode每日一题]1723. 完成所有工作的最短时间 [1] 1723. 完成所有工作的最短时间 [2] 473. 火柴拼正方形 [1] 1723. 完成所有工作的最短时间 题目: 给你一个 ...

  3. LeetCode 每日一题 3. 无重复字符的最长子串

    LeetCode 每日一题 3. 无重复字符的最长子串   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官劼的博客 本文原创 ...

  4. leetcode每日刷题计划-简单篇day8

    leetcode每日刷题计划-简单篇day8 今天是纠结要不要新买手机的一天QAQ想了想还是算了吧,等自己赚钱买,加油 Num 70 爬楼梯 Climbing Stairs class Solutio ...

  5. Leetcode每日一题:171.excel-sheet-column-number(Excel表列序号)

    思路:就是168题的反命题,进制的方式完美解决: Leetcode每日一题:168.excel-sheet-column-title(Excel表名称) class Solution {public: ...

  6. leetcode每日一题--雀巢原理;抽屉算法;Quorum机制;分布式应用

    leetcode每日一题 539. 最小时间差 示例 1: 输入:timePoints = ["23:59","00:00"] 输出:1 示例 2: 输入:ti ...

  7. LeetCode每日一题——1812. 判断国际象棋棋盘中一个格子的颜色

    LeetCode每日一题系列 题目:1812. 判断国际象棋棋盘中一个格子的颜色 难度:简单 文章目录 LeetCode每日一题系列 题目 示例 思路 题解 题目 给你一个坐标 coordinates ...

  8. 【LeetCode每日一题】——109.有序链表转换二叉搜索树

    文章目录 一[题目类别] 二[题目难度] 三[题目编号] 四[题目描述] 五[题目示例] 六[题目提示] 七[解题思路] 八[时间频度] 九[代码实现] 十[提交结果] 一[题目类别] 二叉树 二[题 ...

  9. leetcode每日一题·救生艇问题(Python)

    leetcode每日一题·救生艇问题(Python) 问题描述 题目入口 题目思路 首先分析问题,一个船最多坐两人,因此我们可以把这个问题看作两两组合的问题,并且如果最重的那个人和最轻的人加起来大于l ...

最新文章

  1. 电容的容量随着电压的变化而变化
  2. NSString之Format
  3. CentOS 7 安装Boost 1.61
  4. ASP字符转换:UTF-8与GB2312互转
  5. windows phone (12) 小试自定义样式
  6. java构建xml参数_Java中使用XML创建EMAIL模板
  7. 一步一步分析vue之_data属性
  8. OpenShift 4 - 查看关键证书到期日期
  9. oracle常用系统变量,Oracle环境变量
  10. 基于SSM开发的房屋租赁系统 JAVA
  11. linux压缩zip下载,linux下wget下载文件到指定目录,解压zip文件,解压与压缩总结...
  12. Flash cs3教程-传统数字动画
  13. 浅议公司现场5S管理内部验收基准
  14. 深度学习HDR算法总结
  15. ryu实例---Hub
  16. 大数据技术如何影响企业决策?
  17. CC2630 7x7 更改为5X5
  18. 如何理性的调整「rwnd」和「cwnd」的大小
  19. T4 级老专家:AIOps 在腾讯的探索和实践
  20. 我画了近百张图来理解红黑树

热门文章

  1. hdu 1802 Black and white painting(置换群)
  2. node.js中使用https请求报CERT_UNTRUSTED的问题解决
  3. Win8 64位安装Oracle 11g时错
  4. 【转】小屁孩, 懂个啥
  5. sring-list-del-string-int:解析左右编码器的,和#号
  6. 为什么用Ghost备份后会有两个文件?
  7. 常用数据挖掘算法举例(下)
  8. JZOJ 1036. 【SCOI2009】迷路
  9. iOS-关于一些手势冲突问题(scrollView 嵌套 tableView)
  10. 20 ide配置快捷键补全提示 win