每日一题20201206(118. 杨辉三角)

简介: 杨辉三角

118. 杨辉三角

31.jpg

image.png

思路



如果你非要按照图片里的样子来看的话,会复杂一点,如果你按照这样的格式:
1
11
121
1331
14641
这样会好理解一点,每次要计算的数,都是上一行的同位置索引+上一行的上个位置的值,如果上一行的上个位置或者上一行的同样位置没有值,则只加上有值的部分。


class Solution:
    def generate(self, numRows: int) -> List[List[int]]:
        # 防止numRows为0的情况,直接return []
        if numRows == 0:
            return []
        # 为了方便,直接添加第一行数据,这样计算上一行的时候就永远有值
        ans = [[1]]
        # 索引从1开始,是因为上面我们已经加入了一行数据了
        for i in range(1, numRows):
            # result是每一行的数据
            result = []
            # 为什么是i+1,因为我们求的当前行的数据总是比上一行多一个
            for j in range(i+1):
                # 如果j-1 < 0了,那么说明j=0,那么说明上一行没有前一个数,直接加
                # 上上一行的同位置数ans[i-1] 这个是上一行 同位置数是ans[i-1][j]
                if j - 1 < 0:
                    result.append(ans[i-1][j])
                # 如果j超出了上一行的索引范围,那么直接加上上一个的最后一个数
                elif j > len(ans[i-1]) - 1:
                    result.append(ans[i-1][j-1])
                # 否则都在正常范围内,直接加上ans[i-1]的j和j-1
                else:
                    result.append(ans[i-1][j-1]+ans[i-1][j])
            ans.append(result)
        return ans

32.jpg

image.png

类似的写法



下面那种做法把两端固定了1和1,每次只计算中间的内容


class Solution:
    def generate(self, numRows: int) -> List[List[int]]:
        result = []
        for n in range(numRows):
            if n == 0:
                result.append([1])
            elif n == 1:
                result.append([1, 1])
            else:
                result.append([1] + [x+result[n-1][i+1] for i, x in enumerate(result[n-1][:-1])] + [1])
        return result




相关文章
|
安全 监控
服务器禁ping的好处和坏处是什么
服务器禁ping的好处和坏处是什么禁ping好处一定程度上在互联网上隐藏自己防止一些批量扫描软件探测主机,减少被入侵的几率; 禁止ping坏处 无法使用常用的ping或者监控软件来检测站点是否正常,服务器是否在线等; 建议一般情况下没必要禁止ping,只要常规的服务器安全设置下注意下使用互联网这么大没多大几率盯上这台服务器。
6371 0
|
缓存 JavaScript 安全
深度解析Nginx正向代理的原理与实现
深度解析Nginx正向代理的原理与实现
650 8
|
机器学习/深度学习 传感器 算法
基于Matlab模拟GPS信号仿真
基于Matlab模拟GPS信号仿真
|
10月前
|
人工智能 弹性计算 监控
【云故事探索】NO.16:阿里云弹性计算加速精准学 AI 教育普惠落地
智能精准学联合阿里云打造全球首个K12教育超级智能体“寒雪老师”,通过弹性计算实现AI一对一教学,助力教育普惠。
【云故事探索】NO.16:阿里云弹性计算加速精准学 AI 教育普惠落地
|
测试技术
阿里通义千问Qwen2.5进入大模型盲测全球前十
阿里通义千问Qwen2.5进入大模型盲测全球前十
|
机器学习/深度学习
机器学习模型评估指标详解
【7月更文挑战第14天】选择合适的评估指标对于准确评估机器学习模型的性能至关重要。在实际应用中,需要根据具体任务场景和数据特点,综合考虑多种评估指标,以全面评估模型的性能。同时,还需要注意评估指标的局限性,避免单一指标带来的误导。
1578 2
|
机器学习/深度学习 缓存 人工智能
麻省理工提出“跨层注意力”,极大优化Transformer缓存
【7月更文挑战第4天】麻省理工学院的研究团队提出了一种新的Transformer优化技术——跨层注意力(CLA),旨在解决大型模型的缓存问题。CLA通过相邻层间共享键值头减半KV缓存,提高内存效率,允许处理更长序列和批量。实验显示,CLA在10亿至30亿参数模型中实现了性能与内存使用的良好平衡,但可能增加计算开销,并非所有模型适用。论文链接:[arXiv:2405.12981](https://arxiv.org/abs/2405.12981)
596 0
|
移动开发 前端开发 JavaScript
技术经验分享:Canvas入门到高级详解(上)
技术经验分享:Canvas入门到高级详解(上)
399 0
|
安全 Linux 网络安全
linux服务器木马排查
【4月更文挑战第18天】该文提供了服务木马排查的六个步骤:1) 检查系统日志,观察异常IP并用SSH防护,限制22端口和root用户;2) 查看系统用户,找寻异常或新创建的UID/GID为0的用户;3) 检查UID为0的进程和隐藏进程,防止恶意活动;4) 搜索异常大文件和具有特殊权限的文件;5) 检验系统计划任务的完整性;6) 使用rkhunter和chkrootkit检测rootkit。关键在于识别入侵点并采取相应措施。
854 0
|
NoSQL 安全 Linux
Linux 安装 Redis (一)单机模式,详细图解
Linux 安装 Redis (一)单机模式,详细图解
1352 1