变态跳台阶[剑指offer]之python实现
2016-10-14 16:53
465 查看
题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
题目链接
跳楼梯的方式有多种供选择,考虑写一层循环,找到所有的方法;
python中append的效率比 insert的效率要高:
Python中的列表则与此不同。它不是由若干个独立的节点相互引用而组成的,而是一整块单一连续的内存区块–我们通常称之为数组。这直接导致其与链表之间的一些区别。例如,尽管两者在遍历时的效率相差无几(除了链表有一些额外开销),但是如果我们按照既定索引值对某元素进行直接访问的话,显然使用数组会更加的高效。因为在数组中,我们通常可以直接计算出目标元素在内存中的位置,并对其进行直接访问。而对于链表,我们需要从头开始遍历整个链表。
但是对于insert操作来说,情况又有所不同。对于链表而言,只要知道了在哪里执行insert操作,其操作成本是非常低的。无论该链表中有多少元素,其操作时间大致相同。但是,对于数组而言,每次执行insert操作都需要移动插入点右边所有的元素,甚至在必要时需要把所有数组元素复制到另外一个更大的数组中。也正因如此,append操作通常会采用一种被称为动态数组或向量的特定解决方案。其主要思路是将内存分配的过大一些,并且等到其溢出时,在线性时间内再次重新分配内存。但这样做似乎会使得append操作变得跟insert操作一样糟糕。其实不然,因为尽管这两种情况会迫使我们去搬动大量的元素,但主要的不同点在于,对于append操作,发生这样的可能性要小得多。事实上,只要我们能确保每次所搬入的数组都大过原数组一定的比例(例如20%甚至100%),那么该操作的平均成本(或者说的更确切一些,将这些搬运开销均摊到每次append操作中去)通常是常数的。
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
题目链接
# -*- coding:utf-8 -*- class Solution: def jumpFloorII(self, number): # write code here ans=[]; ans.append(0); ans.append(1); ans.append(2); for i in range(3 , number+1): sum=1; for j in range(1,i): sum+=ans[j]; ans.append(sum); return ans[number];
跳楼梯的方式有多种供选择,考虑写一层循环,找到所有的方法;
python中append的效率比 insert的效率要高:
Python中的列表则与此不同。它不是由若干个独立的节点相互引用而组成的,而是一整块单一连续的内存区块–我们通常称之为数组。这直接导致其与链表之间的一些区别。例如,尽管两者在遍历时的效率相差无几(除了链表有一些额外开销),但是如果我们按照既定索引值对某元素进行直接访问的话,显然使用数组会更加的高效。因为在数组中,我们通常可以直接计算出目标元素在内存中的位置,并对其进行直接访问。而对于链表,我们需要从头开始遍历整个链表。
但是对于insert操作来说,情况又有所不同。对于链表而言,只要知道了在哪里执行insert操作,其操作成本是非常低的。无论该链表中有多少元素,其操作时间大致相同。但是,对于数组而言,每次执行insert操作都需要移动插入点右边所有的元素,甚至在必要时需要把所有数组元素复制到另外一个更大的数组中。也正因如此,append操作通常会采用一种被称为动态数组或向量的特定解决方案。其主要思路是将内存分配的过大一些,并且等到其溢出时,在线性时间内再次重新分配内存。但这样做似乎会使得append操作变得跟insert操作一样糟糕。其实不然,因为尽管这两种情况会迫使我们去搬动大量的元素,但主要的不同点在于,对于append操作,发生这样的可能性要小得多。事实上,只要我们能确保每次所搬入的数组都大过原数组一定的比例(例如20%甚至100%),那么该操作的平均成本(或者说的更确切一些,将这些搬运开销均摊到每次append操作中去)通常是常数的。
相关文章推荐
- [牛客网,剑指offer,python] 变态跳台阶
- [牛客网,剑指offer,python] 变态跳台阶
- 【剑指offer——JAVA实现】变态跳台阶
- [牛客网,剑指offer,python] 变态跳台阶
- [牛客网,剑指offer,python] 变态跳台阶
- [牛客网,剑指offer,python] 变态跳台阶
- 《苦练算法》-剑指Offer- 九、 变态跳台阶 -python编写
- [牛客网,剑指offer,python] 变态跳台阶
- [牛客网,剑指offer,python] 变态跳台阶
- 【剑指offer】二,变态跳台阶(java实现)
- [牛客网,剑指offer,python] 变态跳台阶
- python刷题日记:剑指offer-变态跳台阶
- [牛客网,剑指offer,python] 变态跳台阶
- [牛客网,剑指offer,python] 变态跳台阶
- [牛客网,剑指offer,python] 变态跳台阶
- 跳台阶剑指offer]之python实现
- [牛客网,剑指offer,python] 变态跳台阶
- 剑指offer(六)之变态跳台阶
- 剑指offer面试题之变态跳台阶
- 剑指offer第八题【跳台阶】c++实现