返回顶部
首页 > 资讯 > 后端开发 > Python >leepcode(斐波那契数列与floa
  • 809
分享到

leepcode(斐波那契数列与floa

数列leepcodefloa 2023-01-31 00:01:17 809人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 示例 1: 输入: [1,2,3] 输出: [1,2

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。

你可以假设除了整数 0 之外,这个整数不会以零开头。

示例 1:

输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。

解答:

a = ''
lis1 = []  ##定义一个空字符串和一个空列表
for i in digits:  
    a += str(i)  ##将列表里的的整数转换成字符串,并将字符串添加进空字符串a里
b = int(a) + 1  ##在将字符串a转换成整数,进行加法运算,并赋值给b。
for j in str(b):    ##将整数组b进行字符串转换,并拿出每个字符串
    lis1.append(int(j))  ##将字符串转换成整数,并添加进lis1的列表里
return lis1

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

注意:给定 n 是一个正整数。

示例 1:

输入: 2
输出: 2
解释: 有两种方法可以爬到楼顶。
1.  1 阶 + 1 阶
2.  2 阶
class Solution:
    def climbStairs(self, n: int) -> int:
        if n == 1:
            return 1
        elif n == 2:
            return 2
        else:
            a = 1
            b = 2           
            for i in range(n-2):                
                a,b = b,a+b
            return b

补充点: 斐波那契数列

数列:1,1,2,3,5,8,13,21,34…n被称为斐波那契数列

特点:第一个、第二个数为1,从第三个开始,该值等于前面两个数之和。

当n>=2时,其值只与其前面两个数的值有关,所在在只需求出第n个值的时候,我们没必要浪费空间去存储在n前2个数之前的值。

给定两个有序整数数组 nums1nums2,将 nums2 合并到 nums1使得 num1 成为一个有序数组。

说明:

  • 初始化 nums1nums2 的元素数量分别为 mn
  • 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。

示例:

输入:
nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6],       n = 3

输出: [1,2,2,3,5,6]

解答:

if n == 0: ##当n=0时,数组nums2为空,两组合并只有数组nums1的元素。
    nums1 = nums1
j = 0 and j <n  ##新设一个变量j
for i in range(m,len(nums1)): ##m代表是数组nums1的元素个数,len(nums1)代表数组nums1的索引值长度,取值范围设置到m,len(nums1)表示,可以计算出nums1中空值0的数量。
    if nums1[i] == 0:
        nums1[i] = nums2[j] ##每当nums1[i]等于0,就将nums2赋值给nums1
        j +=1
        if j == n :
            break
nums1.sort()  ##最后进行排序

给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。

如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。

注意你不能在买入股票前卖出股票。

示例 1:

输入: [7,1,5,3,6,4]
输出: 5
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。
     注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。

示例 2:

输入: [7,6,4,3,1]
输出: 0
解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。

解答:(引用float(‘inf’)无穷大的特性来比对,从而提取数组中的最小值)float(“inf”)正无穷大 float(“-inf”)负无穷大

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        j = 0  
        l = float('inf') ##float('inf')表示正无穷大
        for i in prices:
            l = min(l,i) ##取数组中i与正无穷大的最小值
            j = max(j,i-l)  ##先用i减去每次循环的最小值得到每次循环的最大值
        return j

给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。

设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。

注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

示例 1:

输入: [7,1,5,3,6,4]
输出: 7
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。
     随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3 。

示例 2:

输入: [1,2,3,4,5]
输出: 4
解释: 在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。
     注意你不能在第 1 天和第 2 天接连购买股票,之后再将它们卖出。
     因为这样属于同时参与了多笔交易,你必须在再次购买前出售掉之前的股票。

解答:(既然可以多次交易,那么只要每次交易都有利润,那么就能买卖,我们就可以求利润>0的总和)

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        j = 0
        for i in range(len(prices)-1): ## 因为索引超出范围,所以要减去一个1
            if prices[i+1] - prices[i]>0:  ##如果每次买卖的利润>0 
                j += prices[i+1] -prices[i]  ##将每次的利润加在一块
        return (j)

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

说明:

你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?

示例 1:

输入: [2,2,1]
输出: 1

示例 2:

输入: [4,1,2,1,2]
输出: 4

解答:**题目中提到只有不重复的元素出现一次外,所有元素均出现两次,那么先用集合去重,剩下的元素都只有一次,再把这个集合*2,那么该集合的总和就比原先的数组得总和多了一个不重复元素的值,这个值就是我们所需要的。**

class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        return((sum(set(nums)))*2 -sum(nums))

--结束END--

本文标题: leepcode(斐波那契数列与floa

本文链接: https://lsjlt.com/news/182305.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • leepcode(斐波那契数列与floa
    给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 示例 1: 输入: [1,2,3] 输出: [1,2...
    99+
    2023-01-31
    数列 leepcode floa
  • python实现斐波那契数列
    斐波那契数列的发明者是意大利数学家昂纳多.斐波那契(Leonardo Fibonacci)。斐波那契数列又被称为黄金分割数列,或兔子数列。它指的是这样一个数列:0 1 1 2 3 5 8 13 21 34 ....在数学上,斐波那契数列以递...
    99+
    2023-01-31
    数列 python
  • python3斐波那契数列的实现
    def fib(num): a,b=1,1 while a<num: print(a,end=' ') a,b=b,a+b def fib_tump(...
    99+
    2023-01-31
    数列
  • python - 斐波那契(Fibona
    斐波那契数列即数列中每一项等于它前面两项的和,公式如下: f(n) = f(n-1) + f(n-2)    n>2        -----        递推公式 f(n) = 1                       ...
    99+
    2023-01-31
    python Fibona
  • Python怎么实现斐波那契数列
    这篇文章主要介绍“Python怎么实现斐波那契数列”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python怎么实现斐波那契数列”文章能帮助大家解决问题。1、递归方法输出斐波那契数列第n个元素的值2...
    99+
    2023-06-28
  • python怎么输出斐波那契数列
    要输出斐波那契数列,可以使用迭代或递归的方法来实现。以下是两种实现方式: 使用迭代方式: def fibonacci(n): ...
    99+
    2024-02-29
    python
  • java中斐波那契数列怎么实现
    本篇内容主要讲解“java中斐波那契数列怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java中斐波那契数列怎么实现”吧!   斐波那契数列指的是:数...
    99+
    2024-04-02
  • 如何用php实现斐波那契数列
    这篇文章主要介绍了如何用php实现斐波那契数列的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何用php实现斐波那契数列文章都会有所收获,下面我们一起来看看吧。实现方法:1、用数组来求,语法“for($i=0;...
    99+
    2023-07-05
  • python简单脚本之斐波那契数列
    斐波那契数列,是这样的一组数列0,1,1,2,3,5,8,13,21,34,55........简单的概括一下,就是从第三个数起,等于前面两个数字的和求斐波那契数列最正统的方法就是函数递归了,不过对于python而言,有更加简单的方法操作,...
    99+
    2023-01-30
    数列 脚本 简单
  • 怎么用php实现斐波那契数列
    实现方法:1、用数组来求,语法“for($i=0;$i<$n;$i++){if($i==0||$i==1){$arr[$i]=1;}else{$arr[$i]=$arr[$i-1]+$arr[$i-2];}echo $arr[$i];...
    99+
    2023-05-14
    php
  • java斐波那契数列代码怎么写
    下面是一个Java程序示例,用递归的方式实现斐波那契数列的计算: public class Fibonacci { publ...
    99+
    2024-03-01
    java
  • C语言深入探究斐波那契数列
    目录一、递归思想二、空间换时间三、动态规划四、通项公式五、矩阵快速幂六、总结本文章参考leetcode斐波那契数官方题解 斐波那契的边界条件是 F(0)=0 和 F(1)=1。当 n...
    99+
    2024-04-02
  • C语言如何实现斐波那契数列
    这篇文章主要介绍了C语言如何实现斐波那契数列的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言如何实现斐波那契数列文章都会有所收获,下面我们一起来看看吧。C语言数据结构递归之斐波那契数列首先,关于递归深度,递...
    99+
    2023-06-17
  • Go语言怎么实现斐波那契数列
    这篇文章主要介绍“ Go语言怎么实现斐波那契数列”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“ Go语言怎么实现斐波那契数列”文章能帮助大家解决问题。斐波那契数列以下实例通过 Go 语言的递归函数实...
    99+
    2023-06-19
  • 怎么使用python实现斐波那契数列
    这篇文章主要介绍“怎么使用python实现斐波那契数列”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用python实现斐波那契数列”文章能帮助大家解决问题。斐波那契数列(Fibonacci s...
    99+
    2023-06-27
  • java实现斐波那契数列的三种方法
    斐波那契数列(Fibonacci sequence)的定义:斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,...
    99+
    2017-12-03
    java 斐波那契数列 方法
  • python实现斐波那契数列的方法示例
    介绍 斐波那契数列,又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下递归的方法定义: F(0)=0,F(1)=1,F(n)=F(n-1)+F(n...
    99+
    2022-06-04
    数列 示例 方法
  • TypeScript中怎么实现一个斐波那契数列
    这篇文章将为大家详细讲解有关TypeScript中怎么实现一个斐波那契数列,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。const fib&nbs...
    99+
    2024-04-02
  • JavaScript输出斐波那契数列的实现方法
    目录题目分析基础解法初级递归递归优化总结题目 有这么一道题目需要我们来解答: 试输出斐波那契数列的前10项,即 1、1、2、3、5、8、13、21、34、55。 ...
    99+
    2024-04-02
  • C语言中斐波那契数列怎么实现
    这篇文章主要介绍“C语言中斐波那契数列怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C语言中斐波那契数列怎么实现”文章能帮助大家解决问题。一、递归    一般来说递归实现...
    99+
    2023-06-28
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作