【算法】算法题-20231130

news/2024/7/23 10:01:02 标签: 算法

这里写目录标题

  • 一、290. 单词规律
  • 二.、存在重复元素 II
  • 三、128. 最长连续序列

在这里插入图片描述

一、290. 单词规律

简单

给定一种规律 pattern 和一个字符串 s ,判断 s 是否遵循相同的规律。
这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。

示例1:
输入: pattern = “abba”, s = “dog cat cat dog”
输出: true
示例 2:
输入:pattern = “abba”, s = “dog cat cat fish”
输出: false
示例 3:
输入: pattern = “aaaa”, s = “dog cat cat dog”
输出: false

解题思路
首先对字符串进行分割,之后先判断pattern和分割后的字符串长度是否相同
如果不相同直接False
接着遍历分割后的字符串,看索引值是否相同,不相同就返回False

在这里插入图片描述

class Solution:
    def wordPattern(self, pattern, s):
        words  = s.split(" ")
        if len(pattern) != len(words):
            return False        # 字符数和单词数不一致,一定不匹配
        p2s = {}  # pattern中的字符到s中的字符字串的映射表
        s2p = {}  # s中的字符子串到pattern中的字符的映射表

        for ch,word in zip(pattern,words):
            if (ch in p2s and p2s[ch]!=word) or (word in s2p and s2p[word]!=ch):
                # 字符与单词没有一一映射:即字符记录的映射不是当前单词或单词记录的映射不是当前字符
                return False
            # 更新映射,已存在的映射更新后仍然是不变的;不存在的映射将被加入
            p2s[ch]=word
            s2p[word]=ch
        return True

ss = Solution()
pattern = "aaaa"
s = "dog cat cat dog"
print(ss.wordPattern(pattern, s))

二.、存在重复元素 II

简单
给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j ,满足 nums[i] == nums[j] 且 abs(i - j) <= k 。如果存在,返回 true ;否则,返回 false 。
示例 1:
输入:nums = [1,2,3,1], k = 3
输出:true
示例 2:
输入:nums = [1,0,1,1], k = 1
输出:true
示例 3:
输入:nums = [1,2,3,1,2,3], k = 2
输出:false

def test2(nums, k):
    hash = {}
    for i in range(len(nums)):
        if nums[i] not in hash:
            hash[nums[i]] = i
        else:
            if i - hash[nums[i]] <= k:
                return True
            else:
                hash[nums[i]] = i
    return False

nums = [1, 2, 3, 1, 2, 3]
k = 2
print(test2(nums, k))

三、128. 最长连续序列

中等
给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。
请你设计并实现时间复杂度为 O(n) 的算法解决此问题。

示例 1:
输入:nums = [100,4,200,1,3,2]
输出:4
解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。
示例 2:
输入:nums = [0,3,7,2,5,8,4,6,0,1]
输出:9

思路:

"""

def test3(nums):
    res = 0  # 记录最长连续序列的长度
    num_set = set(nums)  # 记录nums中的所有数值
    for num in num_set:
        # 如果当前的数是一个连续序列的起点,统计这个连续序列的长度
        if (num - 1) not in num_set:
            seq_len = 1  # 连续序列的长度,初始为1
            while (num + 1) in num_set:
                seq_len += 1
                num += 1  # 不断查找连续序列,指导num的下一个数不存在数组中
            res = max(res, seq_len)
    return res

nums=[100,4,200,1,3,2]
print(test3(nums))

a=[i for i in range(2541,2676)]
print(a)

在这里插入图片描述


http://www.niftyadmin.cn/n/5227415.html

相关文章

【Vue】【uni-app】实现工单列表项详情页面

这次主要实现的是一个工单详情页面 从工单列表项中点击详情 跳转到工单详情页面&#xff0c;这个详情页面就是这次我们要实现的页面&#xff0c;并可以通过点击这个关闭按钮返回到工单列表页面 首先是在我们原有的工单列表页面的按钮增加一个点击跳转 <button size"m…

webpack如何处理文件、图片

webpack5之前是通过&#xff0c;file-loader、raw-loader、url-loader处理文件 webpack5是通过使用资源模块类型&#xff08;asset module type&#xff09;处理文件 资源模块类型(asset module type)&#xff0c;通过添加 4 种新的模块类型&#xff0c;来替换所有这些 loade…

身份验证和电子邮件的网络安全即将迎来地震

任何拥有 Gmail 或 Yahoo 电子邮件帐户的人都清楚&#xff0c;如果不是明确的欺诈企图&#xff0c;他们的收件箱中可能充满了未经请求的邮件。 这些服务的用户很可能多次想知道他们的提供商是否可以采取措施至少减少垃圾邮件的数量以及随之而来的诈骗风险。 好消息是&#xf…

HT for Web (Hightopo) 使用心得(5)- 动画的实现

其实&#xff0c;在 HT for Web 中&#xff0c;有多种手段可以用来实现动画。我们这里仍然用直升机为例&#xff0c;只是更换了场景。增加了巡游过程。 使用 HT 开发的一个简单网页直升机巡逻动画&#xff08;Hightopo 使用心得&#xff08;5&#xff09;&#xff09; 这里主…

毕业设计单片机可以用万能板吗?

毕业设计单片机可以用万能板吗? 可以是可以&#xff0c;就是焊接起来比较麻烦&#xff0c;特别是有好几个重复连线点的时候&#xff0c;检测起来就不那么容易了&#xff0c;而且布线看起来乱糟糟的&#xff0c;如果后期一不小心把线弄断了&#xff0c;查起来就更麻烦了&#x…

您可以使用自己的服务器做哪些很酷的事情_Maizyun

您可以使用自己的服务器做哪些很酷的事情&#xff1f; 随着互联网的快速发展&#xff0c;拥有自己的服务器已经成为很多人的梦想。 您可以使用服务器做很多很酷的事情&#xff0c;这里有一些可能会让您兴奋的示例。 1. 建立个人网站或博客 有了自己的服务器&#xff0c;您就…

从零构建属于自己的GPT系列1:文本数据预处理、文本数据tokenizer、逐行代码解读

&#x1f6a9;&#x1f6a9;&#x1f6a9;Hugging Face 实战系列 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在PyCharm中进行 本篇文章配套的代码资源已经上传 从零构建属于自己的GPT系列1&#xff1a;文本数据预处理 从零构建属于自己的GPT系列2&#xff1a;语…

基于卷积神经网络的人体行为识别系统开发与设计

摘 要 基于卷积神经网络的人体行为识别的开发与设计 摘要&#xff1a;随着计算机领域不断的创新、其它行业对计算机的应用需求的提高以及社会对解放劳动力的迫切&#xff0c;人机交互成为人们关注的问题。深度学习的出现帮助了人们实现人机交互&#xff0c;而卷积神经网络是其…