IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 【算法零基础100讲题解】第五讲 计数器——基于Python语言 -> 正文阅读

[数据结构与算法]【算法零基础100讲题解】第五讲 计数器——基于Python语言

零、写在前面

今天又是朴素的刷题人的一天;
今天的内容是关于计数器的,别问我为什么是这个,因为我也是跟着别人做的!
常规步骤,走起!

一、概念定义

计数器的定义很简单,这里的话用我自己的理解就是用一个变量去记录程序中某个需要记录的东西,比如循环次数,某个数出现的次数了等;
相信大家其实在很多题目中都遇到过需要返回一个变量次数的问题,这些问题也就是计数器常用的位置;
在Python里呢,列表与字符串都可以直接使用count去对其中某个元素进行数量统计,在下面的题目中也会遇到!

二、题目解析

1.唯一元素的和(1748)

在这里插入图片描述

class Solution:
	def sumOfUnique(self,nums:List[int])->int:
		ans=[]
		for i in nums:
			if nums.count(i)==1:
				ans.append(i)
		res=sum(ans)
		return res

这道题目的话我是采用了count方法对列表中的唯一元素重新添加在另一个列表中,最后对其求和返回即可。
1)建立用来存放唯一元素的列表ans;
2)对列表中的元素进行遍历,判断每个元素的数量是否为1;
3)将数量为1的元素加入到新建立的列表中,求和,返回。

2.字符串中的第一个唯一字符(387)

在这里插入图片描述

class Solution:
	def firstUniqChar(self,s:str)->int:
		for i in range(0,len(s)):
			if s.count(s[i])==1:
				return i
		return -1

这道题目思路与上一题类似,不过这个给我们的是字符串。
1)对每个字符串中的元素进行遍历,统计判断计数器结果是否为1;
2)若为1,返回索引;否则,返回-1。

3.检查是否所有字符出现次数相同(1941)

在这里插入图片描述

from collections import Counter

class Solution:
	def areOccurrencesEqual(self,s:str)->bool:
		freq=Counter(s)
		num=len(s)//len(freq)
		return all(i==num for i in freq.values())

先理解题目中的“好”字符串的含义,也就是需要我们统计字符串中不同字符出现的次数并且判断所有的类型出现的次数是否相同;
1)建立了哈希表用来计数每个字符出现的次数;
2)求出理论每个字符应有的次数;
3)循环遍历哈希表的值与理论值比较看是否全部相等。

4.找到所有数组中消失的数字(448)

在这里插入图片描述

class Solution:
	def findDisappearedNumbers(self,nums:List[int])->List[int]:
		n=len(nums)
		count=set(nums)
		ans=[]
		for i in range(1,n+1):
			if i not in count:
				ans.append(i)
		return ans

题目的要求是要让我们以数组的形式返回在给定的数组中未出现在给定范围内的结果;
这道题如果直接用列表的话会超时,所以中间将列表转化为了集合,这样的话可以极大减小时间复杂度;
1)返回列表的长度,将列表转化为集合,建立存放数的列表;
2)对给定的范围遍历,判断集合中是否存在这个值,如果不在,就将其添加在新建立的列表的尾端,最后遍历结束后返回即可。

5.好数对的数目(1512)

在这里插入图片描述

class Solution:
	def numIdenticalPairs(self,nums:List[int])->int:
	count=0
	for i in range(len(nums)):
		for j in range(len(nums)):
			if nums[i]==nums[j] and i<j:
				count+=1
	return count

这道题目就直接建立了一个计数器;
1)建立计数器;
2)建立双层循环遍历,题目中直接给了我们判定条件,满足时计数器加1
3)遍历结束后返回即可。

三、总结反思

计数器看起来很简单,但其实在程序里也是占据了很重要的一部分,以上的题目也只是一些简单的应用,其他的就需要大家在日常刷题中去总结,去积累!

陆陆续续刷题一段时间了,之所以把这些写出来,也是希望记录一下自己的刷题过程,如果能帮助到需要的人,那我也会很激动的!

都看到这里了,点个赞再走吧!谢谢!

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-12-15 18:33:00  更:2021-12-15 18:33:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 16:45:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码