`
lantian_123
  • 浏览: 1360213 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Python算法题

 
阅读更多

projecteuler上面的题,试着用python写了下


问题1:列出所有是3或者是5的倍数且小于10的自然数,结果是3、5、6、9,这些值的结果之和为23,求小于1000且是3或者是5的倍数的值的和?一行代码解决


方法一://java程序员的思维

def getSum(num1,num2,maxValue):
    values = []
    for i in range(max):
        if i%num1==0 or i%num2==0:
            values.append(i)
    return reduce(lambda x,y:x+y,list)
 
方法二://很pythonic的写法
print sum([x for x in range( 1000) if x% 3== 0 or x% 5== 0])
 
方法三://匿名函数写法
print sum(filter( lambda x: x% 3== 0 or x% 5== 0,range( 1000)))

问题2:对于Fibonacci函数,新的项是前两项之和,如:1,1,2,3,5,8,13...找出所有偶数值项且Fibonacci序列的最大项不超过4000000.

方法一:'''回调函数,把全部小于4000000数装入list中,然后遍历选择满足条件的值'''
def fibon(maxItem):
    if maxItem<=1:
        return 1
    else:
        return fibon(maxItem- 1)+fibon( maxItem- 2)
       
if __name__ == "__main__":
    i=1
    l = []
    val = fibon(i)
    while 4000000 > val:
        l.append(val)
        i+=1
        val = fibon(i)
   
    print sum([x for x in l if x %2==0])
 
此方法不仅代码繁杂,而且执行速度也很慢

方法二:
def fibon2():
    a=b=1
    sum =0
    while b < 4000000:
        b = a+b
        a = b-a
        if a%2==0:
            sum +=a
    print sum

方法三:
def fibon3():
    lastValue =2
    lastSecondValue=1
   
    newValue=0
    sum = 2
   
    while newValue<4000000:
        newValue = lastValue+lastSecondValue

        if newValue % 2 ==0:
            sum += newValue
        lastSecondValue = lastValue
        lastValue = newValue
    print sum
 

补:不用递归,求指定项的值
def fibon4(index):
    last= lastSecond =  newValue = 1
   
    for i in range(2 ,index):
        newValue = lastSecond+last
        lastSecond = last
        last = newValue
    return newValue
 







1
1
分享到:
评论

相关推荐

    python算法趣味题目

    python算法趣味题目.doc

    20道Python算法题及答案

    20道Python算法题及答案

    蛙跳算法python代码

    蛙跳算法python代码

    Python算法题源代码-LeetCode(力扣)-搜索插入位置

    力扣热题Python源代码 题目35. 搜索插入位置 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的...

    Python算法题源代码-LeetCode(力扣)-子集

    力扣热题Python源代码 题目78. 子集 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1: 输入:nums = [1,2...

    Python算法题源代码-LeetCode(力扣)-全排列

    力扣热题Python源代码 题目46. 全排列 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 输入:nums = [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1...

    Python算法题源代码-LeetCode(力扣)-搜索旋转排序数组

    力扣热题Python源代码 题目33. 搜索旋转排序数组 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 )上进行了 旋转,使数组变为 [nums[k], nums[k+1], ..., ...

    Python算法题源代码-LeetCode(力扣)-分割回文串

    力扣热题Python源代码 题目131. 分割回文串 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正着读和反着读都一样的字符串。 示例 1: 输入:s = ...

    Python算法题源代码-LeetCode(力扣)-N皇后

    力扣热题Python源代码 题目51. N 皇后 按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。...

    Python算法题源代码-LeetCode(力扣)-岛屿数量

    力扣热题Python源代码 200. 岛屿数量 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,...

    Python算法题源代码-LeetCode(力扣)-腐烂的橘子

    力扣热题Python源代码 题目994. 腐烂的橘子 在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一: 值 0 代表空单元格;值 1 代表新鲜橘子;值 2 代表腐烂的橘子。 每分钟,腐烂的橘子 周围 4 个方向上...

    Python算法题源代码-LeetCode(力扣)-电话号码的字母组合

    力扣热题Python源代码 题目17. 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何...

    Python算法题源代码-LeetCode(力扣)-搜索二维矩阵

    力扣热题Python源代码 题目74. 搜索二维矩阵 给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。 每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 ...

    Python算法题源代码-LeetCode(力扣)-寻找旋转排序数组中的最小值

    力扣热题Python源代码 题目153. 寻找旋转排序数组中的最小值 提示 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到: ...

    Python算法题源代码-LeetCode(力扣)-单词搜索

    力扣热题Python源代码 题目79. 单词搜索 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母...

    Python算法题源代码-LeetCode(力扣)-括号生成

    力扣热题Python源代码 题目22. 括号生成 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例 1: 输入:n = 3 输出:["((()))","(()())","(())()","()(())","()()...

    Python算法题源代码-LeetCode(力扣)-实现 Trie (前缀树)

    力扣热题Python源代码 题目208. 实现 Trie (前缀树) Trie(发音类似 "try")或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。 这一数据结构有相当多的应用情景,例如自动补完和拼写检查...

    Python算法题源代码-LeetCode(力扣)-课程表

    力扣热题Python源代码 题目207. 课程表 你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。 在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中 prerequisites[i] = ...

    Python算法题源代码-LeetCode(力扣)-组合总和

    力扣热题Python源代码 39. 组合总和 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 , 并以列表形式返回。你可以按 任意...

    Python算法题源代码-LeetCode(力扣)-在排序数组中查找元素的第一个和最后一个位置

    力扣热题Python源代码 题目34. 在排序数组中查找元素的第一个和最后一个位置 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不...

Global site tag (gtag.js) - Google Analytics