文章目录

  • 方法:考虑的基本数据结构
  • 例题
    • 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组队学习——查找(一)相关推荐

  1. leetcode组队学习——查找(二)

    文章目录 1.两数之和 15. 三数之和 16. 最接近的三数之和 18. 四数之和 454. 四数相加 II 49. 字母异位词分组 447. 回旋镖的数量 149. 直线上最多的点数 1.两数之和 ...

  2. leetcode组队学习——动态规划

    文章目录 主要思想 模板步骤 例题 300. 最长上升子序列 674. 最长连续递增序列 5. 最长回文子串 516. 最长回文子序列 72. 编辑距离 198. 打家劫舍 213. 打家劫舍 II ...

  3. [组队学习]查找1------打卡

    一.查找表 根据基本的数据结构 第一类: 查找有无–set 元素'a'是否存在,通常用set:集合 set只存储键,而不需要对应其相应的值. set中的键不允许重复 第二类: 查找对应关系(键值对应) ...

  4. Leetcode组队学习——分治

    文章目录 主要思想 分治算法的步骤 分治法适用的情况 伪代码 3道例题 169.多数元素 53.最大子序和 50. Pow(x, n) 主要思想 分治算法的主要思想是将原问题递归地分成若干个子问题,直 ...

  5. 【组队学习】【31期】LeetCode 刷题

    LeetCode 刷题 航路开辟者:杨世超 领航员:刘军 航海士:杨世超.李彦鹏.叶志雄.赵子一 基本信息 开源内容:https://github.com/itcharge/LeetCode-Py 开 ...

  6. LeetCode学习-查找2-合并版

    LeetCode学习-查找 几个基本数据结构 一,查找表 349,求公共元素 242,判断两字符串是否字母相同 202,快乐数问题 290,模式匹配(需理清思路) 205,同构 451,对出现频率排序 ...

  7. 第8期Datawhale组队学习计划

    第8期Datawhale组队学习计划马上就要开始啦 这次共组织15个组队学习,涵盖了AI领域从理论知识到动手实践的内容 按照下面给出的最完备学习路线分类,难度系数分为低.中.高三档,可以按照需要参加 ...

  8. 转发:Datawhale第七期组队学习计划

    编者注:Datawhale是一个公益组织,也是AiUnion的四个成员之一,所有学习计划是免费的. 第7期Datawhale组队学习计划 马上就要开始啦 这次共组织15个组队学习 涵盖了AI领域从理论 ...

  9. Datawhale 暑期组队学习计划

    Datawhale暑期组队学习计划 马上就要开始啦 这次共组织15个组队学习 涵盖了AI领域从理论知识到动手实践的内容 按照下面给出的最完备学习路线分类 难度系数分为低.中.高三档 可以按照需要参加 ...

最新文章

  1. n皇后问题JS实现(N-Queens)
  2. 网站更换服务器ip地教程,由于服务器更换IP地址,服务器不更换。需要如何操作使网站正常运行呢?,POSCMS,CodeIgniter技术文档,PHP开发文档,迅睿CMS框架官方教程...
  3. javascript操作select下拉列表框的一点小经验
  4. C++对象模型学习——站在对象模型的尖端
  5. UIAutomator 2
  6. 嵌入式软件设计第12次实验报告-140201235-陈宇
  7. 【Linux系统编程】可重入函数和不可重入函数
  8. LetCode-算法-整数反转
  9. apache htpasswd.exe创建密码
  10. Android应用程序管理系列(一)——管理对象封装概述
  11. 讲座笔记:图匹配 Graph Matching 问题 | 机器学习组合优化
  12. linux与windows文件共享——samba
  13. Am2910的指令扩展
  14. linux 7.4ip配置,新手进阶 Ubuntu7.10中配置IP地址
  15. 2019年终总结——工作第二年
  16. 程序员的算法趣题 python3 - (4)
  17. 有道云笔记Markdown图片链接解决办法
  18. SEO诊断案例-崔凯博客
  19. 多标签用户画像分析跑得快的关键在哪里?
  20. 每日新闻摘要 每天精选12条新闻简报 每天一分钟 知晓天下事 5月13日

热门文章

  1. 关于各种算法以及好的blog的整理(持续更新)
  2. 判断是否离开当前页面
  3. python的tab自动补全
  4. JS和AIR(FLEX)的互相调用详解
  5. iOS 推送通知详解
  6. Silverlight toolkit 中ListPicker控件的用法【转】
  7. DSP sawtooth锯齿波与square方波matlab产生(M2.2)
  8. mysql分组统计查询 张三_MySQL 怎样分组查询
  9. java 试卷自动生成_基于JAVA的试题自动生成系统 - WEB源码|JSP源码/Java|源代码 - 源码中国...
  10. .net mysql和php mysql数据库连接_浅谈PHP连接MySQL数据库的三种方式