leetcode组队学习——查找(一)
文章目录
- 方法:考虑的基本数据结构
- 例题
- 202. 快乐数
- 205. 同构字符串
- 242. 有效的字母异位词
- 290. 单词规律
- 349. 两个数组的交集
- 350. 两个数组的交集 II
- 451. 根据字符出现频率排序
方法:考虑的基本数据结构
- 第一类: 查找有无–set
- 元素’a’是否存在,通常用set:集合
- set只存储键,而不需要对应其相应的值。
- set中的键不允许重复
- 第二类: 查找对应关系(键值对应)–dict
- 元素’a’出现了几次:dict–>字典
- dict中的键不允许重复
- 第三类: 改变映射关系–map
- 通过将原有序列的关系映射统一表示为其他
例题
202. 快乐数
编写一个算法来判断一个数 n 是不是快乐数。
「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。
如果 n 是快乐数就返回 True ;不是,则返回 False 。
class Solution:def isHappy(self, n: int) -> bool:num_dict = set()while n!=1:sum_value = 0while n>0:temp = n%10sum_value += temp**2n //=10if sum_value in num_dict :return Falseelse:num_dict.add(sum_value)n = sum_valuereturn True
205. 同构字符串
给定两个字符串 s 和 t,判断它们是否是同构的。
如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。
所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。
class Solution:def isIsomorphic(self, s: str, t: str) -> bool:length = len(s)hash_map = {}for i in range(length):if s[i] not in hash_map.keys():if t[i] in hash_map.values():return Falseelse:hash_map[s[i]] = t[i]else:if hash_map[s[i]] != t[i]:return Falseelse:continuereturn True
242. 有效的字母异位词
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
class Solution:def isAnagram(self, s: str, t: str) -> bool:from collections import Counters_dict = Counter(s)t_dict = Counter(t)if s_dict == t_dict:return Trueelse:return False
290. 单词规律
给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律。
这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应规律。
class Solution:def wordPattern(self, pattern: str, str: str) -> bool:length = len(pattern)hash_map = {}result_str = str.split(" ")if length != len(result_str):return Falsefor i in range(length):if pattern[i] not in hash_map.keys():if result_str[i] in hash_map.values():return Falseelse:hash_map[pattern[i]] = result_str[i]else:if hash_map[pattern[i]] != result_str[i]:return Falseelse:continuereturn True
349. 两个数组的交集
给定两个数组,编写一个函数来计算它们的交集。
class Solution:def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:nums1 = list(set(nums1))nums2 = list(set(nums2))res = []for i in nums1:if i in nums2:res.append(i)return res
350. 两个数组的交集 II
给定两个数组,编写一个函数来计算它们的交集。(可重复)
class Solution:def intersect(self, nums1: List[int], nums2: List[int]) -> List[int]:from collections import Counternums1_dict = Counter(nums1)res = []for i in nums2:if nums1_dict[i]>0:res.append(i)nums1_dict[i] -=1return res
451. 根据字符出现频率排序
给定一个字符串,请将字符串里的字符按照出现的频率降序排列。
class Solution:def frequencySort(self, s: str) -> str:from collections import Counters = Counter(s)s = sorted(s.items(), key=lambda item:item[1], reverse = True)res = ''for key, value in s:res += key*valuereturn res
以上部分内容来自datawhale组队学习
leetcode组队学习——查找(一)相关推荐
- leetcode组队学习——查找(二)
文章目录 1.两数之和 15. 三数之和 16. 最接近的三数之和 18. 四数之和 454. 四数相加 II 49. 字母异位词分组 447. 回旋镖的数量 149. 直线上最多的点数 1.两数之和 ...
- leetcode组队学习——动态规划
文章目录 主要思想 模板步骤 例题 300. 最长上升子序列 674. 最长连续递增序列 5. 最长回文子串 516. 最长回文子序列 72. 编辑距离 198. 打家劫舍 213. 打家劫舍 II ...
- [组队学习]查找1------打卡
一.查找表 根据基本的数据结构 第一类: 查找有无–set 元素'a'是否存在,通常用set:集合 set只存储键,而不需要对应其相应的值. set中的键不允许重复 第二类: 查找对应关系(键值对应) ...
- Leetcode组队学习——分治
文章目录 主要思想 分治算法的步骤 分治法适用的情况 伪代码 3道例题 169.多数元素 53.最大子序和 50. Pow(x, n) 主要思想 分治算法的主要思想是将原问题递归地分成若干个子问题,直 ...
- 【组队学习】【31期】LeetCode 刷题
LeetCode 刷题 航路开辟者:杨世超 领航员:刘军 航海士:杨世超.李彦鹏.叶志雄.赵子一 基本信息 开源内容:https://github.com/itcharge/LeetCode-Py 开 ...
- LeetCode学习-查找2-合并版
LeetCode学习-查找 几个基本数据结构 一,查找表 349,求公共元素 242,判断两字符串是否字母相同 202,快乐数问题 290,模式匹配(需理清思路) 205,同构 451,对出现频率排序 ...
- 第8期Datawhale组队学习计划
第8期Datawhale组队学习计划马上就要开始啦 这次共组织15个组队学习,涵盖了AI领域从理论知识到动手实践的内容 按照下面给出的最完备学习路线分类,难度系数分为低.中.高三档,可以按照需要参加 ...
- 转发:Datawhale第七期组队学习计划
编者注:Datawhale是一个公益组织,也是AiUnion的四个成员之一,所有学习计划是免费的. 第7期Datawhale组队学习计划 马上就要开始啦 这次共组织15个组队学习 涵盖了AI领域从理论 ...
- Datawhale 暑期组队学习计划
Datawhale暑期组队学习计划 马上就要开始啦 这次共组织15个组队学习 涵盖了AI领域从理论知识到动手实践的内容 按照下面给出的最完备学习路线分类 难度系数分为低.中.高三档 可以按照需要参加 ...
最新文章
- n皇后问题JS实现(N-Queens)
- 网站更换服务器ip地教程,由于服务器更换IP地址,服务器不更换。需要如何操作使网站正常运行呢?,POSCMS,CodeIgniter技术文档,PHP开发文档,迅睿CMS框架官方教程...
- javascript操作select下拉列表框的一点小经验
- C++对象模型学习——站在对象模型的尖端
- UIAutomator 2
- 嵌入式软件设计第12次实验报告-140201235-陈宇
- 【Linux系统编程】可重入函数和不可重入函数
- LetCode-算法-整数反转
- apache htpasswd.exe创建密码
- Android应用程序管理系列(一)——管理对象封装概述
- 讲座笔记:图匹配 Graph Matching 问题 | 机器学习组合优化
- linux与windows文件共享——samba
- Am2910的指令扩展
- linux 7.4ip配置,新手进阶 Ubuntu7.10中配置IP地址
- 2019年终总结——工作第二年
- 程序员的算法趣题 python3 - (4)
- 有道云笔记Markdown图片链接解决办法
- SEO诊断案例-崔凯博客
- 多标签用户画像分析跑得快的关键在哪里?
- 每日新闻摘要 每天精选12条新闻简报 每天一分钟 知晓天下事 5月13日
热门文章
- 关于各种算法以及好的blog的整理(持续更新)
- 判断是否离开当前页面
- python的tab自动补全
- JS和AIR(FLEX)的互相调用详解
- iOS 推送通知详解
- Silverlight toolkit 中ListPicker控件的用法【转】
- DSP sawtooth锯齿波与square方波matlab产生(M2.2)
- mysql分组统计查询 张三_MySQL 怎样分组查询
- java 试卷自动生成_基于JAVA的试题自动生成系统 - WEB源码|JSP源码/Java|源代码 - 源码中国...
- .net mysql和php mysql数据库连接_浅谈PHP连接MySQL数据库的三种方式