算法
xcsxchen
这个作者很懒,什么都没留下…
展开
-
算法很美 笔记 12.图结构
12.图结构1. 图基础定义和基本术语图(graph)是一种网状数据结构,图是由非空的顶点集合和一个描述顶点之间关系的集合组成。图由顶点和边组成,顶点表示对象,,边表示两个对象间的连接关系。图大体分两种,边没有指向性的叫无向图,边具有指向性的叫有向图。边可以带权值,称为带权图。无向图术语两个顶点之间如果有边连接,视为两个顶点相邻相邻顶点的序列称为路径起点和终点重合的路径称为圈,特殊路径任意两点之间都存在路径连接的图称为连通图顶点连接的边数叫原创 2020-05-09 18:22:49 · 726 阅读 · 2 评论 -
算法很美 笔记 11.树结构
11.树结构1.树的基本概念及实现定义和基本术语树是由一个集合以及在该集合上定义的一种关系构成的。集合中的元素称为树的结点,所定义的关系称为父子关系。父子关系在树的结点之间建立了一个层次结构。在这种层次结构中有一个结点具有特殊的地位,这个结点称为该树的根结点,或简称为树根。结点的层次和树的深度结点的层次(level)从根开始定义,层次数为0的结点是根结点,...原创 2020-04-04 16:43:56 · 749 阅读 · 0 评论 -
算法很美 笔记 10.哈希表、哈希映射
10.哈希表、哈希映射1.HashMap,HashSet基本概念若关键字为k ,则其值存放在f(k)的存储位置上。由此,不需比较便可直接取得所查记录。称这个对应关系f为散列函数,按这个思想建立的表为散列表。对不同的关键字可能得到同一散列地址,即k1≠k2 ,而f(k1)=f(k2) ,这种现象称为冲突(英语: Collision)。具有相同函数值的关键字对该散列函数来说称做同义词。...原创 2020-03-26 22:30:40 · 943 阅读 · 0 评论 -
算法很美 笔记 9.线性结构:列表、链表、栈、队列
9.线性结构:列表、链表、栈、队列1.面向对象概念类和对象对象将数据和操作打包在一起 ,类描述了这一切用构造器创建(实例化)对象类和类之间的关系关联(组合、聚集)泛化关于继承祖先类Object Java所有类的祖先类方法重写toString方法equals方法关于接口Comparable接口Comparator接口Clon...原创 2020-03-21 17:38:15 · 673 阅读 · 0 评论 -
算法很美 笔记 8.贪心策略与动态规划
8.贪心策略与动态规划动态规划和贪心算法都是一种递推算法均用局部最优解来推导全局最优解是对遍历解空间的一种优化当问题具有最优子结构时,可用动规,而贪心是动规的特例什么是贪心策略-顾眼前遵循某种规则,不断(贪心地)选取当前最优策略,最终找到最优解难点:当前最优未必是整体最优题1:硬币问题有1元,5元,10元,50元,100元,500元的硬币各c1,c5,c10,c50,c...原创 2020-03-19 22:06:47 · 1382 阅读 · 2 评论 -
算法很美 笔记 7.深入递归,深搜,回溯,剪枝等
7.深入递归,深搜,回溯,剪枝等"逐步生成结果”类问题之数值型自下而上的递归(递推,数学归纳,动态规划)解决简单情况下的问题推广到稍复杂情况下的问题.如果递推次数很明确,用迭代如果有封闭形式,可以直接求解题1:三步问题三步问题。有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模10...原创 2020-03-14 10:44:05 · 1642 阅读 · 1 评论 -
算法很美 笔记 6.数学问题
6.数学问题题1:天平称重:变种3进制用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量。如果有无限个砝码,重量分别是1,3,9,27,81,……等3的指数幂,神奇之处在于用它们可以称出任意整数重量(砝码允许放在左右两个盘中)。本题目要求编程实现:对用户给定的重量,给出砝码组合方案。用户输入:5程序输出:9-3-1用户输入:19程序输出:27-9+1要求程序输出的组合...原创 2020-02-29 19:46:35 · 1621 阅读 · 1 评论 -
算法很美 笔记 5.字符串问题
5.字符串问题题1:判定字符是否唯一实现一个算法,确定一个字符串 s 的所有字符是否全都不同。示例 1:输入: s = “leetcode”输出: false示例 2:输入: s = “abc”输出: true限制:0 <= len(s) <= 100如果你不使用额外的数据结构,会很加分。public static boolean isUnique(String...原创 2020-02-26 17:25:51 · 1444 阅读 · 0 评论 -
算法很美 笔记 4.多维数组与矩阵
4.多维数组与矩阵题1 :顺时针打印二维数组输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例 2:输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9...原创 2020-02-16 22:59:46 · 914 阅读 · 0 评论 -
算法很美 笔记 3.查找和排序
分治法分治法(divide and conquer,D&C) :将原问题划分成若干个规模较小而结构与原问题一致的子问题;递归地解决这些子问题然后再合并其结果,就得到原问题的解。容易确定运行时间,是分治算法的优点之一。分治模式在每一层递归上都有三个步骤分解(Divide) :将原问题分解成一系列子问题;解决(Conquer) :递归地解各子问题。若子问题足够小,则直接有解;合...原创 2020-02-16 22:56:04 · 1978 阅读 · 3 评论 -
数据结构 严蔚敏 第10章内部排序Java实现
内部排序1.概述一、什么是排序?排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。一般情况下,假设含n个记录的序列为{R1,R2,…,Rn},其相应的关键字序列为 { K1, K2, …,Kn },这些关键字相互之间可以进行比较,即在它们之间存在着这样一个关系Kp1≤Kp2≤…≤Kpn,按此固有关系将上式记录序列重新排列为{ Rp1, Rp2, ...原创 2020-02-15 19:14:32 · 586 阅读 · 0 评论 -
算法很美 笔记 2.递归与算法分析
2.查找与排序递归递归设计经验找重复(子问题)找重复中的变化量→参数找参数变化趋势→设计出口练习策略循环改递归经典递归大量练习,总结规律,掌握套路找到感觉,挑战高难度1.求n的阶乘 /** * f1(n):求n的阶乘-->f1(n-1)求n-1的阶乘 * 找重复:n*(n-1)的阶乘,求n-1的阶乘是原问题的重复(规模更小)——子问题 ...原创 2020-02-06 23:24:18 · 1863 阅读 · 5 评论 -
算法很美 笔记1.位运算
1.位运算位运算符在处理整形数值时,可以直接对组成整形数值的各个位进行操作。这意味着可以使用屏蔽技术获得整数中的各个位(? ? )&(与)、| (或)、^(异或)、~ (非/取反)">>“和”<<"运算符将二进制位进行右移或者左移操作">>>"运算符将用0填充高位; >>运算符用符号位填充高位,没有<<<运...原创 2020-02-06 23:11:26 · 2579 阅读 · 1 评论