当前位置: 首页 > news >正文

《LeetCode 热题 100》

《LeetCode 热题 100》持续更新

  • 一、hash表
    • 1.两数之和
    • 49.字母异位词分组
    • 128.最长连续序列

一、hash表

1.两数之和

【题解】遍历nums数组,判断target-num是否在hash表中,如果不在就把当前遍历的数字和其下表加入到hash表中,如果在则返回hash表中数字的下标以及当前数字下标。
当然也可以使用暴力求解,第二层遍历看target-num是否在数组nums中。
【代码】

class Solution(object):def twoSum(self, nums, target):""":type nums: List[int]:type target: int:rtype: List[int]"""hashmap=dict()for i,num in enumerate(nums):if target-num in hashmap:return [hashmap[target-num],i]hashmap[nums[i]]=i

49.字母异位词分组

【题解】对字符串数组中每个单词进行排序,使得其按正序排序。接着遍历排序过的字符串数组,并把排列相同的单词放入到hash表中,key为字母排序,值为字符串数组中的单词。
【代码】

strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
res = dict()
sortedStrs = [''.join(sorted(list(s))) for s in strs]
for i in range(len(sortedStrs)):if sortedStrs[i] not in res.keys():res[sortedStrs[i]] = [strs[i]]else:res[sortedStrs[i]].append(strs[i])
print( list(res.values()))

128.最长连续序列

【题解】用一个set存储list,然后遍历这个set,看当前数的前一个数在不在set中,如果在就下一个,如果不在一直循环直到下一个数不在。为什么要查看当前数的前一个数在不在,是因为避免重复循环,就是要找到第一个循环的数(即最小的数)。

class Solution:def longestConsecutive(self, nums: List[int]) -> int:max_len=0num_set =set(nums)for num in num_set:if (num-1) not in num_set:seq_len=1while (num+1) in num_set:seq_len+=1num+=1max_len = max(max_len,seq_len)return max_len

http://www.mrgr.cn/news/18557.html

相关文章:

  • 多模态大模型中,融合后如何知道最终结果受哪种模态影响更大?
  • 12、Django Admin在列表视图页面上显示计算字段
  • 哪个编程工具让你的工作效率翻倍?
  • 【Navicat】数据可视化工具激活
  • Vue笔记总结(Xmind格式):第六天
  • 8_29_QCalendarWidget
  • 一个.NET开源、现代、轻量级的文本编辑器
  • 《全球及中国时域反射计(TDR)行业市场现状分析与发展前景预测研究报告》
  • RabbitMQ:浅谈死信队列、延时队列
  • 9.2 docker部署nmt:使用haproxy代理nginx
  • 城市综合治理可视化:提升管理效率与透明度
  • linux离线安装nacos
  • 数字图像处理基础:图像处理概念、步骤、方式介绍
  • 嵌入式开发中从C文件到BIN文件的具体细节
  • 【K8s】专题十三:Kubernetes 容器运行时之 Docker 与 Containerd 详解
  • 十大免费 LiDAR 数据查看器
  • 回收铱树脂浅析
  • Ribbon 源码分析【Ribbon 负载均衡】
  • 【开发记录】老项目集成xxljob并配置运行
  • 【项目自动化构建工具】gradle入门到进阶