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

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

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


目录
相关文章
|
9月前
|
人工智能 程序员 数据库
AI客服会完全替代人工客服吗
本文介绍了AI客服的应用和发展,包括作者亲身搭建AI客服的经历,以及AI客服在提供24小时服务、快速响应客户需求、精准回答问题等方面的优势。文中还提到了构建AI总结助手、客户对话分析和智能导购助手的具体应用场景,展示了AI客服在提高工作效率、降低成本和优化用户体验方面的潜力。最后,文章讨论了AI客服替代人工客服的可能性及其局限性,强调应结合两者优势共同提升服务质量。
|
机器学习/深度学习 编解码 算法
【计算机视觉 | Transformer】arxiv 计算机视觉关于Transformer的学术速递(8 月 10 日论文合集)
【计算机视觉 | Transformer】arxiv 计算机视觉关于Transformer的学术速递(8 月 10 日论文合集)
|
存储 网络架构
Vue3-admin-element框架学习笔记----5(最终篇--动态路由)
Vue3-admin-element框架学习笔记----5(最终篇--动态路由)
247 0
后端登录接口使用postman,无法接收返回数据,怎样解决,认真比较与原项目的代码,看看有没有写的不一样的,问题就能解决,不要多少写,根据postman的提示先找到错误的进程,看错误进程出现在那个进程
后端登录接口使用postman,无法接收返回数据,怎样解决,认真比较与原项目的代码,看看有没有写的不一样的,问题就能解决,不要多少写,根据postman的提示先找到错误的进程,看错误进程出现在那个进程
|
负载均衡 Java Nacos
Spring Cloud 5大组件
Spring Cloud 5大组件
|
Java 应用服务中间件
tomcat启动startup.bat一闪而过解决方案
tomcat启动startup.bat一闪而过解决方案
400 0
|
程序员 数据库
Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 操作数类型冲突: varbinary 与 text 不兼容
Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 操作数类型冲突: varbinary 与 text 不兼容
1397 0
|
监控 前端开发 关系型数据库
zabbix部署【各模块详细介绍】(一)
zabbix部署【各模块详细介绍】
452 0
Ubuntu中如何查看mp4视频
ubuntu中都是命令行显示,我们要看mp4的话需要安装一些相应的插件,下面我做一个简要的介绍
Ubuntu中如何查看mp4视频
|
Web App开发 缓存 网络协议
chrome谷歌浏览器&firefox火狐清除dns缓存的办法
chrome谷歌浏览器&firefox火狐清除dns缓存的办法
769 0
chrome谷歌浏览器&firefox火狐清除dns缓存的办法