
数算
上课不要睡觉了
逝者如斯夫,不舍昼夜
展开
-
力扣7_1672. 最富有客户的资产总量
给你一个 m x n 的整数网格 accounts ,其中 是第 位客户在第 家银行托管的资产数量。返回最富有客户所拥有的 资产总量 。客户的 资产总量 就是他们在各家银行托管的资产数量之和。最富有客户就是 资产总量 最大的客户。示例 1:示例 2:示例 3:来源:力扣(LeetCode)Java解法Python解法...原创 2022-07-11 20:53:12 · 368 阅读 · 0 评论 -
力扣6_1342. 将数字变成 0 的操作次数
给你一个非负整数 num ,请你返回将它变成 0 所需要的步数。 如果当前数字是偶数,你需要把它除以 2 ;否则,减去 1 。示例 1:示例 2:示例 3:来源:力扣(LeetCode)Java解法Python解法原创 2022-07-07 20:37:53 · 259 阅读 · 0 评论 -
力扣5_876. 链表的中间结点
给定一个头结点为 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:示例 2:提示:来源:力扣(LeetCode)Java解法这里使用了类似C语言里面的双指针的方法,快指针每次移动二格,慢指针每次移动一格最终当快指针走完时正好慢指针走完一半。Python解法这里的Python采用的是传统方法,先将链表存入列表中,通过索引取得列表的中间元素。......原创 2022-07-06 16:42:22 · 185 阅读 · 0 评论 -
力扣4_412. Fizz Buzz
给你一个整数 n ,找出从 1 到 n 各个整数的 Fizz Buzz 表示,并用字符串数组 answer(下标从 1 开始)返回结果,其中:示例 1:示例 2:示例 3:来源:力扣(LeetCode)Java解法Python解法原创 2022-07-05 20:51:50 · 218 阅读 · 0 评论 -
力扣3_383. 赎金信
给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。如果可以,返回 true ;否则返回 false 。magazine 中的每个字符只能在 ransomNote 中使用一次。示例 1:示例 2:示例 3:来源:力扣(LeetCode)Java解法Python解法1Python解法2...原创 2022-07-04 16:07:58 · 406 阅读 · 0 评论 -
力扣2_1480. 一维数组的动态和
给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。请返回 nums 的动态和。示例 1:示例 2:示例 3:来源:力扣(LeetCode)Java解法Python解法(思路和Java的相同)...原创 2022-07-04 15:11:51 · 344 阅读 · 0 评论 -
力扣_回文数
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。示例 1:示例 2:示例 3:JAVA解法...............原创 2022-07-03 16:34:28 · 303 阅读 · 0 评论 -
《数据结构与算法》线性结构复习题
期末数算复习资料,程序题是使用Python解答原创 2022-06-22 11:30:15 · 2958 阅读 · 0 评论 -
Python实现后序表达式计算(代码)
首先使用一个函数完成输入中序转后序中序转后序前面的博客有写Python使用栈将中序转后序(代码)from pythonds.basic import Stack # 引入栈def infix_to_postfix(infix_expr): prec = {} prec["*"] = 3 prec["/"] = 3 prec["+"] = 2 prec["-"] = 2 prec["("] = 1 op_stack = Stack()原创 2022-05-04 22:46:25 · 1176 阅读 · 2 评论 -
Python使用栈将中序转后序(代码)
# 从中序表达式到后序表达式的转换# string模块中定义了一些常用的属性(包含所有数字,字母,可打印的所有ascii码等)from pythonds.basic import Stack # 引入栈import stringdef infix_to_postfix(infix_expr): prec = {} # 用字典存优先级 # precedence优先;优先权 prec["*"] = 3 prec["/"] = 3 prec["+"] = 2原创 2022-05-04 13:39:16 · 1076 阅读 · 0 评论 -
Python使用栈十进制转二进制、十进制转任意进制(代码)
# 10转2from pythonds.basic import Stack # 引入栈def divide_by2(dec_number): rem_stack = Stack() while dec_number > 0: rem = dec_number % 2 # 取余 rem_stack.push(rem) # 入栈 dec_number = dec_number // 2 # 取整 bin_strin原创 2022-05-03 21:45:48 · 1866 阅读 · 0 评论 -
使用Python堆栈判断三种(大中小括号)符号是否匹配
这里可以与上一条结合起来看Python使用堆栈匹配括号(代码)# 匹配符号from pythonds.basic import Stack # 引入栈def par_checker(symbol_string): s = Stack() balanced = True # 括号对应状态 index = 0 # 下标 while index < len(symbol_string) and balanced: symbol = symbo原创 2022-05-03 17:03:30 · 609 阅读 · 0 评论 -
Python使用堆栈匹配括号(代码)
这里需要引入包pythonds具体文件和安装方法请访问这条博客:PyCharm环境中安装pythonds-1.2.1-py3-none-any.whl的方法.代码:# 匹配括号from pythonds.basic import Stack # 引入栈def par_checker(symbol_string): s = Stack() balanced = True # 括号对应状态 index = 0 # 下标 while index < len原创 2022-05-03 10:17:23 · 640 阅读 · 0 评论 -
Python——栈
首先用一张图来表示栈:栈只有一个开口,在这个开口完成入栈和出栈。并且入栈是按照顺序堆叠,先入栈的被“叠”在最下面,后入栈的在上面。想要最下面的出来,必须它的上面没有东西。即先进后出,后进先出。下面通过Python实现栈# 用Python实现栈class Stack: def __init__(self): self.items = [] def isEmpty(self): return self.items == [] def push原创 2022-05-01 22:20:21 · 1647 阅读 · 0 评论 -
Python(代码)——生成list列表的4种方法
def test1(): l = [] for i in range(10): l = l + [i] print(l)def test2(): l = [] for i in range(10): l.append(i) print(l)def test3(): l = [i for i in range(10)] print(l)def test4(): l = list(range(1原创 2022-04-27 10:52:17 · 8694 阅读 · 0 评论 -
Python(算法综合)问题 G: 图的遍历——广度优先搜索
问题 G: 图的遍历——广度优先搜索题目描述广度优先搜索遍历类似于树的按层次遍历的过程。其过程为:假设从图中的某顶点v出发,在访问了v之后依次访问v的各个未曾被访问过的邻接点,然后分别从这些邻接点出发依次访问它们的邻接点,并使“先被访问的顶点的邻接点”先于“后被访问的顶点的邻接点”被访问,直至图中所有已被访问的顶点的邻接点都被访问到。若此时图中尚有顶点未被访问,则另选图中一个未曾被访问的顶点作为起始点。重复上述过程,直至图中所有顶点都被访问到为止。其算法可以描述如下:在本题中,原创 2022-04-26 22:06:59 · 1906 阅读 · 0 评论 -
Python(算法综合)问题 E: 一山不容二虎——n皇后问题_在 n×n 的棋盘上放置彼此不受攻击的 n 个皇后。设计算法在 n×n 的棋盘上放置 n 个皇后,使其彼 此不受攻击。
问题 E: 一山不容二虎——n皇后问题题目描述在 n×n 的棋盘上放置彼此不受攻击的 n 个皇后。按照国际象棋的规则,皇后可以攻击与 之在同一行、同一列、同一斜线上的棋子。设计算法在 n×n 的棋盘上放置 n 个皇后,使其彼 此不受攻击。输入输入t,表示有t组样例请输入皇后的个数 n输出输出能排列的方案数样例输入14样例输出2提示n<=10解答:n, m = map(int, input().split())li = tuple(map(int, i原创 2022-04-26 19:33:37 · 1367 阅读 · 0 评论 -
Python(算法综合)问题 D: 兵贵神速-快速排序
问题 D: 兵贵神速-快速排序题目描述未来的战争是科技的战争。假如 A 国受到 B 国的导弹威胁,那么 A 国就要启用导弹防御系统,根据卫星、雷达信息快速计算出敌方弹道导弹发射点和落点的信息,将导弹的跟踪和评估数据转告地基雷达,发射拦截导弹摧毁敌方导弹或使导弹失去攻击能力。如果 A 国的导弹防御系统处理速度缓慢,等算出结果时,导弹已经落地了,还谈何拦截? 现代科技的发展,速度至关重要。我们以最基本的排序为例,生活中到处都用到排序,例如各种比赛、奖学金评选、推荐系统等,排序算法有很多原创 2022-04-26 16:51:13 · 788 阅读 · 0 评论 -
Python(算法综合)问题 A: 一场说走就走的旅行-最短路径(Dijkstra迪杰斯特拉算法)
问题 A: 一场说走就走的旅行-最短路径题目描述有一天,孩子回来对我说:“妈妈,听说马尔代夫很不错,放假了我想去玩。”马尔代夫?我也想去!没有人不向往一场说走就走的旅行!“其实我想去的地方很多,呼伦贝尔大草原、玉龙雪山、布达拉宫、艾菲尔铁塔……”小孩子还说着他感兴趣的地方。于是我们拿出地图,标出想去的地点,然后计算最短路线,估算大约所需的时间,有了这张秘制地图,一场说走就走的旅行不是梦! “哇,感觉我们像凡尔纳的《环游地球八十天》,好激动!可是老妈你也太 out 了,学计算机的最短路线原创 2022-04-26 14:43:57 · 1764 阅读 · 0 评论 -
Python(分治算法)问题 G: 剪绳子_有N根绳子,第i根绳子长度为Li,现在需要M根等长的绳子,你可以对N根绳子进行任意裁剪(不能拼接),请你帮忙计算出这M根绳子最长的长度是多少。
问题 E: 解方程题目描述有N根绳子,第i根绳子长度为Li,现在需要M根等长的绳子,你可以对N根绳子进行任意裁剪(不能拼接),请你帮忙计算出这M根绳子最长的长度是多少。输入第一行包含2个正整数N、M,表示原始绳子的数量和需求绳子的数量。第二行包含N个整数,其中第 i 个整数Li表示第 i 根绳子的长度。已知:1≤N,M≤100000, 0<Li<10^9输出输出一个数字,表示裁剪后最长的长度,保留两位小数。样例输入3 43 5 4样例输出2.50解答(原创 2022-04-22 13:04:40 · 1316 阅读 · 1 评论 -
Python(分治算法)问题 F: 求逆序对_给定一个序列a1,a2,…,an,如果存在i<j并且ai>aj,那么我们称之为逆序对,求逆序对的数目。
问题 F: 求逆序对题目描述给定一个序列a1,a2,…,an,如果存在i<j并且ai>aj,那么我们称之为逆序对,求逆序对的数目。注意:n<=10^5,ai<=10^5输入第一行为n,表示序列长度。接下来的n行,第i+1行表示序列中的第i个数。输出所有逆序对总数。样例输入43232样例输出3解答(分治算法):def merge(a, lt, rt): mid = (lt + rt) // 2 x = 0 # 统计逆序对原创 2022-04-22 12:38:30 · 3013 阅读 · 0 评论 -
Python(分治算法)问题 E: 解方程_求方程f(x)=2^x+3^x-4^x=0在[1,2]内的根。
问题 E: 解方程题目描述求方程f(x)=2^x+3^x-4^x=0在[1,2]内的根。输入输入m(0<=m<=8),控制输出精度输出三个实根(根与根之间留有空格)输出方程f(x)=0的根,x的值精确小数点m位样例输入3样例输出1.507解答(分治算法):n = int(input())def func(x): return 0.5 ** x + 0.75 ** x - 1left = 1right = 2middle1 = 1.5whil原创 2022-04-22 12:17:31 · 1713 阅读 · 0 评论 -
Python(分治算法)问题 D: 取余运算_输入b,p,k的值,求b^p mod k的值(即b的p次方除以k的余数)。其中b,p,k*k为32位整数。
问题 D: 取余运算题目描述输入b,p,k的值,求b^p mod k的值(即b的p次方除以k的余数)。其中b,p,k*k为32位整数。输入输入b,p,k的值输出输出b^p mod k的值样例输入2 10 9 样例输出2^10 mod 9=7解答(分治算法):# 二分法求列表中最小值及下标 def fun(ls, lt, rt, res): # 1.[lt,rt]区间的元素个数小于等于2,直接求解 if rt - lt < 2: res原创 2022-04-22 10:04:05 · 1519 阅读 · 0 评论 -
Python(分治算法)问题 C: 一元三次方程求解_有形如:ax3+bx2+cx+d=0这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d均为实数),并约定该方程存在三个不同实根(根的范
问题 C: 一元三次方程求解题目描述有形如:ax3+bx2+cx+d=0这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差的绝对值≥1。要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后2位。 提示:记方程f(x)=0,若存在2个数x1和x2,且x1<x2,f(x1)*f(x2)<0,则在(x1,x2)之间一定有一个根。输入a,b,c,d原创 2022-04-21 17:02:45 · 2611 阅读 · 0 评论 -
Python(分治算法)问题 B: 分金块_有一个老板有一袋金块。每个月将有两名雇员会因其优异的表现分别被奖励一个金块。按规矩,排名第一的雇员将得到袋中最重的金块,排名第二的雇员将得到袋中最轻的金块。
问题 B: 分金块题目描述有一个老板有一袋金块。每个月将有两名雇员会因其优异的表现分别被奖励一个金块。按规矩,排名第一的雇员将得到袋中最重的金块,排名第二的雇员将得到袋中最轻的金块。根据这种方式,除非有新的金块加入袋中,否则第一名雇员所得到的金块总是比第二名雇员所得到的金块重。如果有新的金块周期性的加入袋中,则每个月都必须找出最轻和最重的金块。假设有一台比较重量的仪器,我们希望用最少的比较次数找出最轻和最重的金块。本题要求用二分算法完成。输入输入数据有多行,第一行为金块个数n(原创 2022-04-21 16:52:40 · 1010 阅读 · 0 评论 -
1.1斐波那契序列
def fib1(n:int) -> int: if n < 2: return n return fib1(n - 1) + fib1(n - 2)if __name__ == "__main__": print(fib1(5)) print(fib1(6)) print(fib1(10))原创 2022-01-17 20:19:32 · 675 阅读 · 0 评论 -
1.2压缩算法
这里是使用Python对四种核苷酸(A、C、G、T)的压缩实现class CompressedGene: def __init__(self,gene:str)->None: self._compress(gene) #压缩 def _compress(self,gene:str)->None: self.bit_string:int=1 for nuclleotide in gene.upper():原创 2022-01-18 16:48:55 · 321 阅读 · 0 评论 -
Python(分治算法)问题 A: 找出伪币_给你一个装有n枚硬币的袋子。n枚硬币中有一个是伪造的,并且那个伪造的硬币比真的硬币要轻一些。你的任务是找出这枚伪造的硬币。
问题 A: 找出伪币题目描述给你一个装有n枚硬币的袋子。n枚硬币中有一个是伪造的,并且那个伪造的硬币比真的硬币要轻一些。你的任务是找出这枚伪造的硬币。输入测试数据有多行,第一行是金币的数量n(n为正整数,并且n<=5000000);接下来一行是n枚硬币的重量,用空格隔开。输出输出假币的位置及重量,用空格隔开。样例输入443 43 43 1 样例输出4 1解答(贪心算法):while True: try: s = list(map(int原创 2022-04-18 19:33:18 · 4211 阅读 · 0 评论 -
Python(贪心算法)问题 H: 导弹拦截_某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统,但是这种拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的
问题 H: 导弹拦截题目描述某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统,但是这种拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭,由于该系统还在试用阶段。所以一套系统有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度不大于30000的正整数)。计算要拦截所有导弹最小需要配备多少套这种导弹拦截系统。输入n颗依次飞来的高度(1≤n≤1000)输出要拦截所有导弹最小配备的系统数k原创 2022-04-16 23:05:24 · 3267 阅读 · 0 评论 -
Python(贪心算法)问题 G: 最大整数_设有n个正整数(n≤20),将它们联接成一排,组成一个最大的多位整数。例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213
问题 G: 最大整数题目描述设有n个正整数(n≤20),将它们联接成一排,组成一个最大的多位整数。 例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213 又如:n=4时,4个整数7,13,4,246联接成的最大整数为:7424613输入输入格式如下: 第一行为正整数n,第2行为n个正整数,2个正整数之间用空格间隔。输出输出n个数连接起来的最大整数样例输入313 312 343样例输出34331213解答(贪心算法):from funct原创 2022-04-16 22:55:17 · 1529 阅读 · 0 评论 -
Python(贪心算法)问题 F: 节目安排_假期到了,天宝终于可以无压力的看电视了。但是他喜欢的节目有点多,如何尽可能多的看到完整的节目。
问题 F: 节目安排题目描述假期到了,天宝终于可以无压力的看电视了。但是他喜欢的节目有点多,如何尽可能多的看到完整的节目。他把喜欢的节目时间表给你,请帮他安排一下吧。输入输入包含多组测试数据。每组输入的第一行是一个整数n(n<=100),表示天宝喜欢的节目的总数。接下来n行,每行输入两个整数si和ei(1<=i<=n),表示第i个节目的开始和结束时间,为了简化问题,每个时间都用一个正整数表示。当n=0时,输入结束。输出对于每组输入,输出能完整看到的电视节目的个原创 2022-04-16 22:26:30 · 1142 阅读 · 0 评论 -
Python(贪心算法)问题 E: 便利店_天宝来到便利店想买些饮料。便利店有各种型号的瓶装饮料售卖,不同型号的饮料卖不同的价格。
问题 E: 便利店题目描述天宝来到便利店想买些饮料。便利店有各种型号的瓶装饮料售卖,不同型号的饮料卖不同的价格。1瓶0.25升的卖A元,1瓶0.5升的饮料卖B元,1瓶1升的卖C元,1瓶2升的卖D元。便利店里每种饮料都是无限供应。天宝要买N升的饮料,最少需要花多少钱呢?聪明的你写个程序帮她算算吧。已知 1) 1≤A,B,C,D≤10^8 ,1≤N≤10^9 2) 输入的数据都是整数 输入输入数据按照下面格式A B C DN输出输出天宝要买N升的饮料所需要原创 2022-04-16 21:38:09 · 1035 阅读 · 0 评论 -
Python(贪心算法)问题 D: 删数问题_输入一个高精度的正整数N,去掉其中任意S个数字后剩下的数字按原左右次序组成一个新的正整数。
问题 D: 删数问题题目描述输入一个高精度的正整数N,去掉其中任意S个数字后剩下的数字按原左右次序组成一个新的正整数。编程对给定的N和S,寻找一种方案使得剩下的数字组成的新数最小。输出新的正整数。(N不超过240位)输入数据均不需判错。输入ns输出最后剩下的最小数。样例输入1754384样例输出13解答(贪心算法):n = list(input())# 将每个数字存放于列表中s = int(input())print(n)li = []i = 0whil原创 2022-04-16 18:51:13 · 4125 阅读 · 0 评论 -
Python(贪心算法)问题 C: 活动选择_学校在最近几天有n个活动,这些活动都需要使用学校的大礼堂,在同一时间,礼堂只能被一个活动使用。
问题 C: 活动选择题目描述学校在最近几天有n个活动,这些活动都需要使用学校的大礼堂,在同一时间,礼堂只能被一个活动使用。由于有些活动时间上有冲突,学校办公室人员只好让一些活动放弃使用礼堂而使用其他教室。现在给出n个活动使用礼堂的起始时间bi和结束时间ei(bi < ei<=32767),请你帮助办公室人员安排一些活动来使用礼堂,要求安排的活动尽量多。输入第一行一个整数n(n<=1000); 接下来的n行,每行两个整数,第一个bi,第二个是ei(bi < ei<=原创 2022-04-16 17:42:50 · 1984 阅读 · 0 评论 -
Python(贪心算法)问题 B: 分牌_有 N 堆纸牌,编号分别为 1,2,…, N。每堆上有若干张,但纸牌总数必为 N 的倍数。可以在任一堆上取若干张纸牌,然后移动。
问题 B: 分牌题目描述有 N 堆纸牌,编号分别为 1,2,…, N。每堆上有若干张,但纸牌总数必为 N 的倍数。可以在任一堆上取若干张纸牌,然后移动。移牌规则为:在编号为 1 堆上取的纸牌,只能移到编号为 2 的堆上;在编号为 N 的堆上取的纸牌,只能移到编号为 N-1 的堆上;其他堆上取的纸牌,可以移到相邻左边或右边的堆上。现在要求找出一种移动方法,用最少的移动次数使每堆上纸牌数都一样多。例如 N=4,4 堆纸牌数分别为: ① 9 ② 8 ③ 17 ④ 6移动3次可达到目的:从原创 2022-04-16 17:02:02 · 1536 阅读 · 0 评论 -
使用Python异序词检测示例_清点法_排序法_蛮力法_计数法
要展示不同数量级的算法,一个好例子就是经典的异序词检测问题。如果一个字符串只是重排了另一个字符串的字符,那么这个字符串就是另一个的异序词,比如 heart 与 earth ,以及 python 与 typhon 。为了简化问题,假设要检查的两个字符串长度相同,并且都是由26个英文字母的小写形式组成的。我们的目标是编写一个布尔函数,它接受两个字符串,并能判断它们是否为异序词。1、方案1:清点法def anagram_solution1(s1, s2): # 清点法 alist = list(s2原创 2022-04-04 11:51:31 · 1399 阅读 · 0 评论 -
Python算法的几个案例(1)_迭代法求解平方根_计算前n个整数之和_time()计算执行时间_不使用循环计算前n个整数之和
1、通过牛顿迭代法求解平方根链接: https://blog.youkuaiyun.com/XQC_KKK/article/details/123790167.2、计算前n个整数之和def sumOfN(n): theSum = 0 for i in range(1, n + 1): theSum += i return theSumprint(sumOfN(3))3、计算执行时间import timedef sumOfN2(n): start =原创 2022-03-30 09:13:06 · 835 阅读 · 0 评论 -
数算(Python)——牛顿迭代法(巴比伦算法)求解平方根
计算x\sqrt{x}x的方法巴比伦算法:猜测一个大于0近似值。x0x_{0}x0使用被开方数除以近似值。xx0\frac{x}{x_{0}}x0x计算前两步的数的平均值。x1=12(x0+xx0)x_{1}=\frac{1}{2}(x_{0}+\frac{x}{x_{0}})x1=21(x0+x0x)令该平均值为新的近似值,回到步骤2,循环计算。下面的算法就是在使用了巴比伦算法进行迭代计算x\sqrt{x}x。def square_root(n): root原创 2022-03-28 15:32:46 · 7532 阅读 · 2 评论