坚持写算法题的第四周(一)

简介: 坚持写算法题的第四周(一)

2021-11-1

题目

判断子序列

image.png


排列硬币

image.png

分糖果

image.png


递增的三元子序列

image.png


题解

1.判断子序列

本题最简单的就是用双指针来写,我开始看子序列然后我就想用dp回溯,但是我发现,虽然dp能写出来但是让这个问题变的超级复杂,最后我看了题解一眼,发现不是dp,用双指针,我当场裂开!!!接下来我们看双指针的办法。‘


首先我们分别用i , j指向两个不同的字符串的首字符,然后开始向右移动,当 s1 [i] == s2 [j]时i加一,而 j 是每次循环的时候都会加一,当i的长度等于s1的长度就返回true,否者返回false。


2.排列硬币

本题其实不是一个很难的问题,就是一个简单的阶梯问题,我们弄一个每次递增为1的变量,然后让n减去这个数,最后当n小于这个变量就退出循环,最后来判断一共有多少个满行。


3.分糖果

本题直接使用长度除2来判断。


4.递增的三元子序列

本题还没理解一种方便的算法,我用的dp没有解出来!!!!!


代码

1.判断子序列

class Solution:
    def isSubsequence(self, s: str, t: str) -> bool:
        if len(s) == 0:
            return True
        i = 0
        j = 0
        while i < len(s) and j <len(t):
            if s[i] == t[j]:
                i += 1
            j += 1
            if i ==len(s):
                return True
        return False

2.排列硬币

class Solution:
    def arrangeCoins(self, n: int) -> int:
        res =1
        while res<=n:
            n-=res
            if n == 0:
                return res
            res +=1
        return res-1

3.分糖果

class Solution:
    def distributeCandies(self, candyType: List[int]) -> int:
        res = []
        for i in candyType :
            if len(res)!=len(candyType)/2 and i not in res:
                res.append(i)
        return len(res)

4.递增的三元子序列

class Solution:
    def increasingTriplet(self, nums: List[int]) -> bool:
        small, mid = max(nums), max(nums)
        for num in nums:
            if num <= small:
                small = num
            elif num <= mid:
                mid = num
            else:
                return True
        return False


目录
相关文章
|
Web App开发 移动开发 JavaScript
彻底学会快速部署vue框架,一篇就够了
Vue框架诞生于2014年,其作者为中国人——尤雨溪,也是新人最容易入手的框架之一,不同于React和Angular,其中文文档也便于大家阅读和学习。Vue用于构建交互式的Web界面的库,是一个用于构建用户界面的渐进式框架。
1718 0
彻底学会快速部署vue框架,一篇就够了
|
关系型数据库 MySQL Linux
|
消息中间件 缓存 网络协议
Kafka简介及使用PHP处理Kafka消息
Kafka简介及使用PHP处理Kafka消息
712 0
Kafka简介及使用PHP处理Kafka消息
|
11月前
|
人工智能 程序员 数据库
AI客服会完全替代人工客服吗
本文介绍了AI客服的应用和发展,包括作者亲身搭建AI客服的经历,以及AI客服在提供24小时服务、快速响应客户需求、精准回答问题等方面的优势。文中还提到了构建AI总结助手、客户对话分析和智能导购助手的具体应用场景,展示了AI客服在提高工作效率、降低成本和优化用户体验方面的潜力。最后,文章讨论了AI客服替代人工客服的可能性及其局限性,强调应结合两者优势共同提升服务质量。
|
存储 安全 网络安全
Windows Server 本地安全策略
由于广泛使用及历史上存在的漏洞,Windows服务器成为黑客和恶意行为者的主要攻击目标。这些系统通常存储敏感数据并支持关键服务,因此组织需优先缓解风险,保障业务的完整性和连续性。常见的威胁包括勒索软件、拒绝服务攻击、内部威胁、恶意软件感染等。本地安全策略是Windows操作系统中用于管理计算机本地安全性设置的工具,主要包括用户账户策略、安全选项、安全设置等。实施强大的安全措施,如定期补丁更新、网络分段、入侵检测系统、数据加密等,对于加固Windows服务器至关重要。
393 1
|
机器学习/深度学习 编解码 算法
【计算机视觉 | Transformer】arxiv 计算机视觉关于Transformer的学术速递(8 月 10 日论文合集)
【计算机视觉 | Transformer】arxiv 计算机视觉关于Transformer的学术速递(8 月 10 日论文合集)
|
人工智能 云计算
阿里云携手合作伙伴得云AI举办《AI赋能 · 智能革新沙龙》
阿里云与得云AI联合举办了《AI赋能·智能革新沙龙》,探讨云计算和AI前沿技术。
后端登录接口使用postman,无法接收返回数据,怎样解决,认真比较与原项目的代码,看看有没有写的不一样的,问题就能解决,不要多少写,根据postman的提示先找到错误的进程,看错误进程出现在那个进程
后端登录接口使用postman,无法接收返回数据,怎样解决,认真比较与原项目的代码,看看有没有写的不一样的,问题就能解决,不要多少写,根据postman的提示先找到错误的进程,看错误进程出现在那个进程
|
数据采集 并行计算 PyTorch
【目标检测之数据集加载】利用DataLoader加载已预处理后的数据集【附代码】
在前一篇文章中,已经通过继承Dataset预处理自己的数据集 ,接下来就是使用pytorch提供的DataLoader函数加载数据集。
852 0
【目标检测之数据集加载】利用DataLoader加载已预处理后的数据集【附代码】
Ubuntu中如何查看mp4视频
ubuntu中都是命令行显示,我们要看mp4的话需要安装一些相应的插件,下面我做一个简要的介绍
Ubuntu中如何查看mp4视频