力扣197周周赛上

  • 题目
  • 思路与算法
  • 代码实现
  • 复杂度分析

题目

  1. 好数对的数目

  2. 仅含 1 的子串数

思路与算法

  1. 第一题直接暴力或者使用map来存值,注意到我们只需要找到这个数字出现的次数num,那么其好数对的个数为排列组合的C(2,N),将其依次存入map并依次计算这个组合数添加入res即可。复杂度可以从暴力的N²降低到到N。
  2. 第二题也是需要仔细看清楚规律,碰到连续的n个1,则添加(n+1)*n/2到res中去即可。注意因为数值较大,需要将各变量都声明为long类型,否则会因为溢出计算错误。

代码实现

  1. 好数对的数目

暴力

class Solution {public int numIdenticalPairs(int[] nums) {int len = nums.length;int count = 0;for (int i = 0; i < len - 1; i++) {for (int j = i + 1; j < len; j++) {if (nums[i] == nums[j]) {count++;}}}return count;}
}

map

class Solution {public int numIdenticalPairs(int[] nums) {int res = 0;Map<Integer,Integer> map = new HashMap<>();for (int num : nums) {map.put(num,map.getOrDefault(num,0) + 1);}for (Map.Entry<Integer,Integer> entryset : map.entrySet()) {int val = entryset.getValue();res += val * (val - 1) / 2;}return res;}
}
  1. 仅含 1 的子串数
class Solution {public int numSub(String s) {char[] ch = s.toCharArray();long count = 0;long res = 0;long div = 1000000007;for (int i = 0; i < ch.length; i++) {char c = ch[i];if (c == '0') {res += (count * (count + 1) / 2);res %= div;count = 0;} else {count++;}}res += (count * (count + 1) / 2);res %= div;return (int) res;}
}

复杂度分析

  1. 第一题暴力法为O(N²),map法降低到O(N)
  2. 第二题纯粹的模拟,只需便利一遍,因此为O(N)

20200724:力扣197周周赛上相关推荐

  1. 20200705:力扣196周周赛上

    力扣196周周赛上 题目 思路与算法 代码实现 复杂度分析 判断能否形成等差数列 题目 所有蚂蚁掉下来前的最后一刻 请注意仔细看给的示例: 思路与算法 题目给定了数组长度大于等于2,也就是说,先排序, ...

  2. 20200701:力扣194周周赛上

    力扣194周周赛上 题目 思路与算法 代码实现 复杂度分析 题目 数组异或操作 保证文件名唯一 注意这个示例: 思路与算法 半个月没写博客了,太懒了,不能再拖延了,今天开始全部带上C++和Java的双 ...

  3. 20200616:力扣193周周赛上

    力扣193周周赛上 题目 思路与算法 代码实现 写在最后 题目 一维数组的动态和 不同整数的最少数目 思路与算法 第一题没啥好说的,动态和,dp最基础的东西. 第二题主要是一个贪心的过程,既然要剩下的 ...

  4. 20200612:力扣192周周赛上

    力扣192周周赛上 题目 思路与算法 代码实现 复杂度分析 题目 1. 重新排列数组 2. 数组中的k个最强值 思路与算法 第一题不需要太多思路,最简单的就是list,list将要求的顺序的数依次收入 ...

  5. 20200505:力扣151周周赛上

    力扣151周周赛上 题目 思路与算法 代码实现 题目 查询无效交易 2.比较字符串最小字母出现频次 思路与算法 第一题直接将我们需要的这四组数据包装成一个Transaction对象,主要是注意书写问题 ...

  6. 20200503:力扣187周周赛上

    力扣187周周赛上 题目 思路与算法 代码实现 复杂度分析 题目 旅行终点站 是否所有 1 都至少相隔 k 个元素 思路与算法 第一题我没做出来,说来惭愧,菜的离谱.看大神的题解豁然开朗,这题类似之前 ...

  7. 20201007:力扣209周周赛题解记录(上)

    力扣209周周赛题解记录(上) 题目 思路与算法 代码实现 复杂度分析 题目 特殊数组的特征值 奇偶树 思路与算法 第一题单纯的暴力就行,应该是可以用二分之类的改善复杂度,没必要赘述,直接上暴力遍历, ...

  8. 20200910:力扣204周周赛题解上(Java/Python/Cpp)

    力扣204周周赛题解上 题目 思路与算法 代码实现 写在最后 题目 1.1566. 重复至少 K 次且长度为 M 的模式 2.1567. 乘积为正数的最长子数组长度 思路与算法 热身题不要求算法技巧, ...

  9. 20200814:力扣201周周赛题解记录上

    力扣201周周赛题解记录上 题目 思路与算法 代码实现 写在最后 题目 整理字符串 找出第 N 个二进制字符串中的第 K 位 思路与算法 第一题这种类似消消乐的东西都是直接用栈来实现的,注意代码细节 ...

最新文章

  1. JSP内置对象-request
  2. 服务器送料器显示通讯异常,西门子贴片机常见故障处理思路和方法
  3. ML之FE:结合Kaggle比赛的某一案例细究特征工程(Feature Engineering)思路框架
  4. python操作json数据_Python操作JSON数据代码示例
  5. 关于页面的多种自适应布局——两列布局
  6. 信息学奥赛一本通(1399:甲流病人初筛)
  7. java常见的内存溢出
  8. 大学计算机基础上机实践报告,大学计算机基础上机实践报告书册.doc
  9. Flutter实战1 --- 写一个天气查询的APP
  10. c语言学生管理p1指向编译错误,在ubuntu下用C语言编写一个学生管理系统,编译时出错,紧急求救!!!...
  11. 人工智能与机器学习学习笔记(三)
  12. SQL Server 2012 安装教程
  13. RTP发送h264文件,用vlc播放
  14. JPBC部分API说明
  15. 对于开发软件的NABCD分析
  16. [转帖] 部分收费的Oracle JDK VS 完全免费的OpenJDK
  17. python中怎样在图片上画线段_python 实现PIL模块在图片画线写字
  18. 主流商业智能(BI)工具的比较(二):Power BI与Domo
  19. 约瑟夫问题与魔术(九)——魔术《五重巧合之皇家同花顺》
  20. 护卫神主机大师Linux添加绑定ssl证书

热门文章

  1. 谷歌、IBM 们的“量子争霸”迷局
  2. “近一个月”、“近三个月”这种查询如何处理更精确?
  3. @开发者,一文搞懂什么是 C# 计时器!|CSDN 博文精选
  4. 为什么我写了一万小时的代码,却仍然成不了架构师?
  5. 44 年前的今天,改变世界的 TA 诞生了!
  6. 可折叠的 iPhone 要来了?
  7. 2018,如何从技术小白升级到大牛程序员?
  8. TIOBE 12 月排行榜:古老的 C 和后起之秀 Kotlin,谁是年度编程语言之王?
  9. oracle 不查加锁的记录,查询记录时给oracle记录加锁
  10. 水桶平分 java_关于java:桶排序算法代码问题