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
分享到:
相关推荐
以下是对这20道Python算法题及答案的详细解析: 1. **排序算法**:Python中常见的排序算法有冒泡排序、选择排序、插入排序、快速排序、归并排序等。了解它们的基本原理和时间复杂度对于优化代码性能至关重要。 2. ...
### Python算法趣味题目详解 #### 题目背景与概述 本文将介绍并解析两道有趣的Python算法题目,旨在帮助读者更好地理解Python语言的特点及其在处理字符串方面的优势。通过具体的示例代码,我们将深入探讨Python...
### Python算法练习题知识点解析 #### 一、实验五任务一:单词识别 **知识点概述:** 本实验任务旨在帮助学习者掌握Python中字典的基本使用方法,包括字典的创建与通过键来访问字典中的值。通过设计一个简单的程序...
蛙跳算法python代码
力扣热题Python源代码 题目46. 全排列 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 输入:nums = [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1...
力扣热题Python源代码 题目994. 腐烂的橘子 在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一: 值 0 代表空单元格;值 1 代表新鲜橘子;值 2 代表腐烂的橘子。 每分钟,腐烂的橘子 周围 4 个方向上...
力扣热题Python源代码 题目35. 搜索插入位置 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的...
力扣热题Python源代码 题目78. 子集 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1: 输入:nums = [1,2...
力扣热题Python源代码 题目33. 搜索旋转排序数组 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 )上进行了 旋转,使数组变为 [nums[k], nums[k+1], ..., ...
力扣热题Python源代码 题目131. 分割回文串 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正着读和反着读都一样的字符串。 示例 1: 输入:s = ...
力扣热题Python源代码 题目51. N 皇后 按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。...
力扣热题Python源代码 200. 岛屿数量 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,...
力扣热题Python源代码 题目17. 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何...
力扣热题Python源代码 题目74. 搜索二维矩阵 给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。 每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 ...
力扣热题Python源代码 题目153. 寻找旋转排序数组中的最小值 提示 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到: ...
力扣热题Python源代码 题目79. 单词搜索 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母...
力扣热题Python源代码 题目22. 括号生成 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例 1: 输入:n = 3 输出:["((()))","(()())","(())()","()(())","()()...
力扣热题Python源代码 题目208. 实现 Trie (前缀树) Trie(发音类似 "try")或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。 这一数据结构有相当多的应用情景,例如自动补完和拼写检查...
力扣热题Python源代码 题目207. 课程表 你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。 在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中 prerequisites[i] = ...
在Python面试中,掌握经典算法题对于求职者来说至关重要,因为它们能展现你的逻辑思维能力和编程技巧。这里我们讨论两道题目,分别是斐波那契数列和素数判断,以及一个关于水仙花数的问题。 首先,让我们看第一题,...