![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法学习
文章平均质量分 57
FaulknerG
这个作者很懒,什么都没留下…
展开
-
HDU4310_acm_Hero
#include #include using namespace std;struct Node{ int dps; int hp;}a[30];int cmp(Node x,Node y){ return x.hp*y.dps<y.hp*x.dps;//按比率排,避免小数,所以讲式子进行转换}int main(){ int t,i;原创 2016-04-06 15:29:52 · 745 阅读 · 1 评论 -
算法Day8-购买和销售股票的最佳时机(一、二)
题目一购买和销售股票的最佳时机(一) 假设有一个数组,其对i个元素是一支给定的股票在某一天i的价格。 如果最多只允许你完成一次交易(例如,购买或销售一次该股票的份额),设计一个算法,来找到最大的赢利点。原创 2016-12-27 22:28:24 · 451 阅读 · 0 评论 -
算法Day9-购买和销售股票的最佳时机(三)
题目假设有一个数组,其对i个元素是一支给定的股票在某一天i的价格。 设计一个算法,来找到最大的赢利点。你最多可以进行两次交易。原创 2016-12-29 11:14:05 · 592 阅读 · 0 评论 -
算法Day1-两数之和
为了逐步训练自己的编程能力,每天一道算法题系列。给定整数的一个数组,找出这样的两个数,他们的加和等于一个特定的目标数字(target)。该问题给出暴力破解外的两种算法,为哈希方法和d双指针扫描法。原创 2016-12-19 22:20:58 · 433 阅读 · 0 评论 -
算法Day12-层次遍历二叉树
题目给定一个二叉树,返回其节点值的层次遍历(即从左到右,一层一层遍历) 通过广度优先遍历来实现层次遍历。创建一个Queue来缓存每一层的树节点,在遍历Queue的过程中,每取出一个元素,将该元素的左右子节点按顺序插入到Queue中。一直遍历下去,直到Queue为空。原创 2017-02-05 23:21:16 · 312 阅读 · 0 评论 -
Day11-前序遍历二叉树
题目给定一个二叉树,返回其节点的值的前序遍历。 注意:递归解决方法很简单,如何用循环迭代来解决这个问题?解析树的遍历常用的方式有两种:递归和循环。递归最容易实现,但是限制性也很明显,即无法处理较大数据。面试的时候,更多还是关注在如何用while原创 2017-01-13 09:38:20 · 340 阅读 · 0 评论 -
算法Day10-平衡二叉树
题目给定一个二叉树,确定它是否是高度平衡的。对于这个问题,高度平衡二叉树定义为其每一个节点的两个子数的深度之差不超过1。解析对于树的问题,大部分都是通过递归来解决的。这道题可以分解为:如果一个树是平衡树,那么其任意一个节点也都是平衡树,即左右子树高度差不超过1。通过根节点对于树进行遍历,然后验证每一个节点是否为平衡树。原创 2016-12-30 14:56:24 · 339 阅读 · 0 评论 -
13爬楼梯问题
题目你要爬一个楼梯,到达楼梯顶部需要n个步骤,每次你可以爬1步或2步。 问,有多少种不同的方法可以到达顶部?解析先将不同台阶数对应的不同方法数列举出来 台阶数 — 方法数 — 1 ——— 1 — 2 ——— 2 — 3 ——— 1+2 = 3 — 4 ——— 1+3+1 = 3+2 = 5 — 5 ——原创 2017-08-03 23:07:35 · 375 阅读 · 0 评论 -
14.复制无向图问题
题目复制一个无向图,图中每一个结点,包含了一个label,以及其neighbors的一个链表。 节点的标签是唯一的。我们使用#作为每个节点的分隔符,并且使用逗号作为节点标签与节点的每一个临近节点的分隔符。例如:{0,1,2#1,2#2,2} 该图一共有3个节点,分为#分隔开的三个部分。 1.第1个节点的标签是0,节点0与节点1和节点2相连。 2.第2个节点的标签是1,节点1和节点2相连。原创 2017-08-05 00:18:31 · 442 阅读 · 0 评论 -
算法Day7-anagrams问题
题目给定字符串的一个数组,返回能够形成anagrams的所有字符串组合。 注:anagrams指的是这样两个单词,在这两个单词当中,每一个英文字母所出现的次数都是相同的(不区分大小写)。原创 2016-12-26 22:23:36 · 307 阅读 · 0 评论 -
Day6-(链表表示)两个数相加
题目(链表表示)两个数相加 给定了表示非负数的两个链表。数字都是以逆序存储的,并且每个节点都包含一个单个的数字。将两个数相加,并且以一个链表的形式返回结果: 输入:(2->4->3) + (5->6->4) 输出:7->0->8 本题和上一题是一样的,区别在于上一题是基于数组的,而本题是基于链表的。把数组操作运算改成链表操作运算就可以了。原创 2016-12-24 23:41:59 · 291 阅读 · 1 评论 -
算法Day5-二进制数相加
题目给定两个二进制字符串,,返回它们的加和(也是一个二进制字符串的形式)。例如: a = "11" b = "1" 返回 "100"这是一道经典的题目,本身算法上并没有难度。要点是通过数组模拟加法,一级一级的往上加,注意处理进位。原创 2016-12-24 11:23:22 · 766 阅读 · 0 评论 -
五星填数_蓝桥杯
五星图案节点填上数字:1~12,除去7和11。要求每条直线上数字和相等。请你利用计算机搜索所有可能的填法有多少种。注意:旋转或镜像后相同的算同一种填法。 /* 5条线 10个点 1 2 3 4 5 6 8 9 10 12 * 每条线4个数字 * 每个数字加2次 **/public class Main{ public static int[] a原创 2016-05-24 17:18:50 · 1726 阅读 · 0 评论 -
蓝桥杯_格子放鸡蛋
答案:spy(da,r,c)/* N*N的格子 每行、每列、每个斜线 不能超过2个鸡蛋 */public class A{ static int max = 0;//最多能下多少蛋 static int T = 0;//有多少种摆放方法 static final int N = 6; //只能在(r,c)以及其右,其下放置 static void f(int[][原创 2016-05-26 14:48:11 · 838 阅读 · 0 评论 -
KMP算法学习笔记
//字符串匹配的暴力算法/*文本串 S 匹配到 i模式串 P 匹配到 j 匹配成功(S[i]==P[j]), i++,j++ 继续匹配下一个 失配(S[i]!=P[j]), i=i-(j-1),j=0 i回溯, j置0*/#include#includeint ViolenMatch(char* s,char* p){ int sle原创 2016-04-05 11:39:18 · 345 阅读 · 0 评论 -
Apriori 初步学习 + C++实现
1.基本概念Apriori算法是一种挖掘关联规则的频繁项集算法,最早由R.Agrawal提出,现已广泛的运用到商业、网络安全等领域。最常见的淘宝相关推荐便包含有这一算法。该算法的主要步骤为:(1) 找到所有支持度大于最小支持度的项目集,即频繁项集(Frequent Itemset);(2) 使用第(1)步的频繁项目集产生期望的规则。Apriori算法着重与第一步,挖掘频繁项集。原创 2016-10-27 21:13:44 · 1436 阅读 · 0 评论 -
算法Day2-三数之和
第一题的拓展题目,由两个数字变成三个数字。给定整数的一个数组,找出这样的三个数,他们的加和0。该问题使用效率较高的双指针扫描法,着重学习了答案去重的方法。原创 2016-12-21 23:33:21 · 387 阅读 · 0 评论 -
算法Day3-3个数之和最接近
3个数之和最接近。本题又是第二天题“3个数之和”问题的拓展,解法和第二题类似,唯一的区别是在遍历的过程中,需要增加一个变量来记录加和与target的差值。原创 2016-12-22 11:11:48 · 692 阅读 · 0 评论 -
算法Day4-4个数之和
题目给定n个整数的一个数组S,S中是否有元素a,b,c,d满足 a+b+c+d = 0 ? 找出数组中所有满足加和为target的不同的三个数组合。原创 2016-12-23 15:52:13 · 308 阅读 · 0 评论 -
白话遗传算法(以长颈鹿的进化为例)
先来看看遗传算法的本质,遗传算法是模拟生物进化的一种全局优化搜索算法,是一种数值求解方法。 说几个大家熟悉的搜索的算法:1.枚举遍历(这也可以算吧- -)2.二分查找法(在有序数组中查找某一特定元素的搜索算法)3.DFS(深度优先搜索,沿着树的深度遍历树的节点)4.Dijkstra算法(用广度优先搜索解决非负权有向图的单源最短路径问题,算法最终得到一个最短路径树) 怎么样?搜索算法咱们也是见的...原创 2018-06-21 23:55:30 · 719 阅读 · 0 评论