zoukankan      html  css  js  c++  java
  • python学习_012

    今天到 好久不上的网站 领扣 看了一下
    网站大变样 界面更加美观了 还新增了各种模式
    然后我就想刷一下题目 试一下

    杨辉三角

    c语言的时候,使用 二维数组 两边填充 1 来解决的

    杨辉三角的规律特别好摸
    每一行的数 等于 上一行的数 + 上一行的数的前一个
    每一行的 结尾 开头 都是 1

    def  yhsj(n):  #定义一个函数 模块化功能 这个名字,随便起的
        x=[1]        
        for i in range(n):
            print(x)
            x.append(1) 
            for j in range(1,int(len(x)/2)):
                x[j]=x[j]+x[j-1]
    yhsj(6)
    #整体思路就是利用两个列表 按照规律 推演出 下一行的数 
    

    居然还有排名

    肯定是大佬都不愿意做这样的题目,要么就是不喜欢用 python 嘿嘿 捡便宜了 这个 第 768 题

    斐波那契数列

    从0 开始 前一个数 + 后一个数 = 下一个数
    0 1 1 2 3 5 8 13 21 34 55 89
    就挺好办的

    方法一

    class Solution:
        """
        @param n: an integer
        @return: an ineger f(n)
        """
        def fibonacci(self, n):
            # write your code here
            x=0
            y=1      
            for i in range(1,n):
                x,y=x+y,x    # 限定范围 交换数据  python 语法简单 爱了爱了
            return x
    
    a1=Solution()  #创建对象
    a1.fibonacci(2)  #调用成员函数
    

    方法二

    斐波那契数列 被推导出公式了 虽然我看不懂推导过程 但是我可以拿过来用啊

    # 斐波那契数列通用公式1
    import math
    class Solution:
        """
        @param n: an integer
        @return: an ineger f(n)
        """
        def fibonacci(self, n):
            x1=5**0.5    #类似于 math.sqrt(5)  开方
            n=n-1
            x=1/x1*(((1+x1)*0.5)**n-((1-x1)*0.5)**n)
            return int(x)
    
    a1=Solution()
    a1.fibonacci(10)
    

    最后这个算法 时间复杂度为 O(1) 但是却没有 方法一 的评分高 有点伤
    还有就是 只能算到 1000 个 当算 10000 个的时候,会溢出

  • 相关阅读:
    mysql 表分区
    mysql 存储过程和函数
    mysql 主从复制
    nginx 生产中配置记录
    harbor资源管理垃圾回收
    harbor部署
    docker使用nfs 做跨主机存储
    基于Gluster分布式实现docker存储卷
    docker 部署elasticsearch集群
    记一次iptables配置(REJECT --reject-with icmp-host-prohibited)
  • 原文地址:https://www.cnblogs.com/shenshuoyaoyouguang/p/13109908.html
Copyright © 2011-2022 走看看