算法及数据结构
weixin_41611045
这个作者很懒,什么都没留下…
展开
-
图(5)最短路径树
1、什么是最短路径这里讨论的是带权有向图和带权无向图,在这类图中一个顶点到其他顶点可能有路径,可能没有路径,也可能有多条不同的路径,怎样找到一条最好的路径呢,这就是本节要讨论的最短路径问题。定义:在图中:从顶点v到v‘v^`v‘的各个边的长度之和就称为该路径的长度。从v到v‘v^`v‘的所有长度中最短的路径就是v到v‘v^`v‘的最短路径,最短路径记为dist(v,v`)在介绍之前我...原创 2020-02-16 21:54:50 · 3784 阅读 · 0 评论 -
动态规划:华为练习题:合唱队排队
题目描述计算最少出列多少位同学,使得剩下的同学排成合唱队形说明:N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK, 则他们的身高满足存在i(1<=i<=K)使得T1<T2<......<Ti-1<Ti&...原创 2020-01-29 19:49:59 · 798 阅读 · 0 评论 -
字符串及相关习题
例题1:翻译密码密码是我们生活中非常重要的东东,我们的那么一点不能说的秘密就全靠它了。哇哈哈. 接下来渊子要在密码之上再加一套密码,虽然简单但也安全。假设渊子原来一个BBS上的密码为zvbo9441987,为了方便记忆,他通过一种算法把这个密码变换成YUANzhi1987,这个密码是他的名字和出生年份,怎么忘都忘不了,而且可以明目张胆地放在显眼的地方而不被别人知道真正的密码。他是这么变换的,...原创 2020-01-17 20:08:46 · 185 阅读 · 0 评论 -
算法练习题(2):求两个数组合的第k个数
'''有两个数m和n,可以组合成任意的数,将组合成的输入按从小到大排列,求第t个数是多少输入:两个数,第t个数输入:3 8 5输出:83因为:3 8可以组成3 8 33 38 83 88....输入:3 7 100输出:733737''''''方法一:可以看出第二组的四个数是由第一组的两个数生成的 第3组的8个数是由第二组的4个数生成的 依次类...原创 2019-10-23 12:30:30 · 258 阅读 · 0 评论 -
算法练习题(1):对字符串进行全排列(知识点:递归)
对一个字符串实现字符串的全排列def swap(arr,i,j): arr[i],arr[j]=arr[j],arr[i]def quanpailie(arr,start,record=[]): if start==len(arr)-1: record.append(''.join(arr)) return else: i...原创 2019-10-23 10:57:27 · 648 阅读 · 0 评论 -
图(四):图的二维矩阵的深度优先搜索和广度优先搜索
一、深度优先搜索按照上面的思路我们进行深度优先搜索的代码实现:递归版:'''深度优先遍历:dfs先进入图的一个节点,并标记已访问,然后选择该节点一个节点继续访问,直到进入的节点中所有相邻节点全被访问过,进入回溯操作,直到将所有节点访问结束'''matrix=[[-1,5,-1,-1,-1,2], [-1,-1,4,-1,-1,-1], [-1,-...原创 2019-10-22 12:51:00 · 599 阅读 · 0 评论 -
图(3)最小生成树与最短路径的 二维矩阵实现形式
2.1 krusal算法这是一个构建最小生成树的简单算法:设G=(V,E)是一个图,V有n个顶点,则利用krusal构建最小生成树的过程如下:(1)初始时选取所有的n个顶点构成孤立点的子图T={}(2)将边集E按权值递增的顺序排序,顺序的检查边序列,找到下一条两端点位于T的两个不同联通分量的边e,把e加入T.(3)不断连接T的顶点数,直到找到n-1条边将其所有的顶点连接。这些联通分量形成...原创 2019-10-19 13:11:49 · 443 阅读 · 0 评论 -
二叉树问题(二):相关习题
题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。代码实现:class TreeNode(): def __init__(self,element): self.element...原创 2019-10-19 16:26:26 · 157 阅读 · 0 评论 -
数据结构与算法习题部分:动态规划、贪婪算法
一、动态规划定义:动态规划是指如果我们要求一个问题的最优解,而且该问题可以分解成若干个子问题,并且问题之间还有重叠的更小的子问题,我们就可以考虑用动态规划去解决这个问题。解决动态规划的问题有四个特点:1、 我们在应用动态规划之前要分析能否把大问题分解成小问题,如果分解的每个小问题也存在最优解,那么把这些小问题的最优解组合起来就能够得出这个问题的最优解,我们就可以应用动态规划解决这个问题2、...原创 2019-05-13 15:59:20 · 189 阅读 · 0 评论 -
斐波那契数列问题,兔子生小兔子的问题
'''有一对兔子,从出生后开始每个与都生一对兔子,小兔子长到三个月以后每个月又生一对兔子假如兔子都不死,问每个月兔子的对数输入:3输出:2'''n=int(input())for z in range(n): n=z print('月份:',n+1) if n<2: #0-1个月兔子数始终是1 print(1) else: ...原创 2019-09-27 13:02:07 · 286 阅读 · 0 评论 -
二叉树练习题(一) 二叉树的遍历
例题1:对于上述二叉树,请实现层次遍历、先序遍历、中序遍历和后序遍历'''二叉树的遍历将以下二叉树分别用先序遍历、中序遍历、后序遍历和层次遍历进行遍历 0 1 2 3 4 5 67 8 9先序遍历:中左右中序遍历:左中右后序遍历:左右中'''class TreeNode: def __init__(self, x): ...原创 2019-10-19 16:26:15 · 15430 阅读 · 0 评论 -
腾讯 笔试题目
1、解析:先说思路:首先判断给出的多维数组的个数,如果数组中个数为1,直接跳出(因为无法组成二维数组),如果给出的数组为2,则最大间隔数量=最小间隔数量=1如果给出的数组间隔大于2:先将列表排序1、如果列表中存在重复值最小间隔肯定为0,这时统计每个元素出现的个数,并将对于元素出现次数大于2的元素(重复元素)利用公式 重复次数*(重复次数-1)/2=最小间隔出现次数最大间隔出现次数...原创 2019-04-05 17:10:54 · 304 阅读 · 0 评论 -
排序和搜索(1)排序、堆、最大(最小索引堆)
排序与搜索排序算法(英语:Sorting algorithm)是一种能将一串数据依照特定顺序进行排列的一种算法。排序算法的稳定性稳定排序算法会让原本有相等键值的纪录维持相对次序。也就是如果一个排序算法是稳定的,当有两个相等键值的纪录R和S,且在原本的列表中R出现在S之前,在排序过的列表中R也将会是在S之前。当相等的元素是无法分辨的,比如像是整数,稳定性并不是一个问题。然而,假设以下的数对将...原创 2019-10-19 16:26:39 · 188 阅读 · 0 评论 -
图论(2) 最小生成树与最短路径问题
一、定义最短路径的本质就是在一个网格中,求出一个结点到其他结点的最短路径。我们在求最短路径时主要看这个最短路径图是有权图还是无权图。...原创 2019-10-21 12:20:37 · 484 阅读 · 0 评论 -
数据结构和算法习题部分 字符串及相关习题
题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。class Solution: # s 源字符串 def replaceSpace(self, s): # write code here s_lis=list(s) ...原创 2020-02-05 18:39:23 · 193 阅读 · 0 评论 -
算法与数据结构:递归
一、什么是递归递归是一种解决问题的方法,将问题分解为更小的子问题,直到得到一个足够小的问题可以 被很简单的解决。通常递归涉及函数调用自身。递归允许我们编写优雅的解决方案,解决可 能很难编程的问题。1、从一个小例子来学习递归例如:我们要计算一个列表[1,3,5,7,9]中元素的和,我们可以用如下代码:假设没有while循环或for循环。你将如何计算整数列表的总和?我们可以把列表重写为一个完...原创 2019-04-05 23:05:30 · 154 阅读 · 0 评论 -
常见算法(1)之动态规划 讲解
动态规划是通过拆分问题,定义问题状态和状态之间的关系,使得问题能够以递推(或者说分治)的方式去解决。那么什么是动态规划呢,我们可以先来看一个例题(1)背包问题1、先看简单算法注:这里用到公式Cn,0+Cn,1+…Cn,n=2^n下面开始填充网格:现在添加一个2000美元的手机,背包还是4磅,计算出最优解基本题目如下:有4样商品,分别是(1)音响:4磅:...转载 2019-04-03 16:26:40 · 125 阅读 · 0 评论