
算法学习
文章平均质量分 86
算法基础 leetcode刷题
卖行家的小报纸
摸鱼选手
展开
-
堆和优先队列
什么是优先队列普通队列和优先队列的比较普通队列:先进先出,后进后出优先队列:出对顺序和入队顺序无关,和优先级相关,优先级高的先出队优先队列的应用排队,VIP客户优先windows任务管理器,系统任务优先优先队列不同实现方式的时间复杂度堆二叉堆是一颗完全二叉树。go标准库中提供了堆的实现,直接参考:https://books.studygolang.com/The-Golang-Standard-Library-by-Example/chapter03/03.3.htmlpac原创 2021-05-10 16:34:22 · 281 阅读 · 0 评论 -
剑指offer题解2-栈和队列
文章目录面试题09 用两个栈实现队列面试题30 包含min函数的栈面试题31 栈的压入、弹出序列面试题09 用两个栈实现队列题目链接:https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/双栈实现队列:成员变量维护两个栈 stack1 和 stack2,其中 stack1 支持插入操作,stack2 支持删除操作构造方法初始化 stack1 和 stack2 为空插入元素插入元素对应方法原创 2021-02-04 20:40:16 · 219 阅读 · 0 评论 -
剑指offer题解1-数组
面试题03 数组中重复的数字链接:https://leetcode-cn.com/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/第一种方法很自然能想到,使用标记数组或者集合,时间复杂度是O(N),空间复杂度是O(N),这没什么好说的。如果加一个要求:要求空间复杂度是O(1)呢?网上看到的第一种方法是原地交换,利用题目中的条件,在一个长度为n的数组nums里的所有数字都在0 ~ n-1之间,那么数组的索引与数组的值之间存在一对多的映射关系。这就是数学上的“原创 2021-02-02 18:56:51 · 179 阅读 · 0 评论 -
第k大数字 && 倒序数问题(分治思想)
一、求第k大数字首先看题目描述:oj链接, 直观方法:借鉴快排过程的partition过程,每经过一次partition将小于特定元素num以及大于num的元素分别放在num元素的两侧,并返回num元素的位置pos,在查找第k大元素的过程中,如果k == num则直接返回num,否则继续递归执行对num左侧元素或者右侧元素的partition过程。注意partition函数的写法,不要写错了...原创 2019-09-11 19:29:10 · 418 阅读 · 0 评论 -
coding训练-week1(4.29-5.5)
从本周开始进行编程训练,每周至少有5天的时间用来coding,每天至少提交3道题,另外需要对刷过的题进行总结,不能刷过一遍什么都没留下或者印象不深刻,此系列博客作总结用。当前题集:牛客网华为机试题编程环境:sublime text3 + vmware ubuntu + xshell编程语言:C文章目录字符串相关题1题2题4题5简单hash表相关题9 提交不重复的整数题8:合并表记录...原创 2019-05-05 21:46:47 · 412 阅读 · 0 评论 -
算法作业-分治
091M4041H - Algorithm Design and AnalysisAssignment 1Notice:For problem 1-6, you should at least do the following things:Describe your algorithm in natural language AND pseudo-code;Draw a “subpr...原创 2020-11-08 19:45:20 · 665 阅读 · 0 评论 -
简单计算器的实现
计算简单表达式的步骤是首先将中缀表达式转换为后缀表达式,然后通过栈来计算后缀表达式,要使用到栈和队列,但是以下代码充分模拟了栈和队列的特点,可以说是很6了。#include<stdio.h>int main(){ char ch; double a[1000],t; while(scanf("%lf",&t)!=EOF) { ...原创 2018-09-13 20:47:29 · 376 阅读 · 0 评论 -
djkstra最短路径算法
在解决有多种标尺的最短路径问题中,即当具有相同的最短路径要让总的花费最小等,有两种解决问题的模板代码,一种是直接用Dijkstra算法:只需要增加一个数组来存放新增的边权或点权或最短路径条数,然后在算法中修改优化d[v]的那个步骤即可,其他部分不需要改动;一种是使用Dijkstra+dfs:先在Dijkstra算法中记录所有的最短路径(只考虑距离),然后从这些最短路径中选出一条第二标尺最优的路径。...原创 2018-09-07 15:50:29 · 1362 阅读 · 3 评论 -
动态规划的降维
01背包问题有N件物品和一个容量为C的背包。第i件物品的费用是w[i],价值是v[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。//w[i] 表示物品i的重量//v[i] 表示物品i的价值//C 表示背包的容量//dp[i][c]表示前i件物品恰放入一个容量为c的背包可以获得的最大价值//dp[i][c] = max(dp[i-1][c]...原创 2018-09-08 15:30:55 · 1107 阅读 · 1 评论 -
PAT-A1034
题目链接:Heap of a gang 题意大概是这样的:给定若干组存在通话的成员,以及通话的时间,这些通话将他们分为若干组,每个组的总边权等于所有通话的长度总和。 现在对于每一个组,如果组内成员人数大于2并且总的通话长度大于给定的一个阈值,就认为这个组是一个团伙,组内通话长度最大的成员就是这个团伙的头目。 输入是若干组数据,输出团伙的个数以及每个团伙的头目和相应的团伙成员数。 并查集的思...原创 2018-09-05 09:25:32 · 650 阅读 · 0 评论 -
二叉堆的建立以及堆排序
PAT A098 Insertion or Heap Sort 题目是对堆排序的过程进行模拟,这其中比较重要的是如何建堆,堆是一个完全二叉树,因此可以用静态数组来模拟。 建堆过程:从下向上,从右向左,进行向下调整,也就是将该非叶子结点的权值与左右子树根结点的权值进行比较,如果孩子结点的较大者值比该结点权值大,就交换,继续对交换后的结点进行向下调整。 堆排序过程:将二叉...原创 2018-09-04 10:01:17 · 1107 阅读 · 0 评论 -
二叉树的生成与层序遍历-PAT A1020
题目要求是:给出一棵二叉树的后序遍历序列和中序遍历序列,求这棵二叉树的层序遍历序列。#include <cstdio>#include <queue>using namespace std;const int maxn = 35;int post[maxn] = {0};int in[maxn] = {0};int traversal[maxn] = {...原创 2018-08-30 17:00:28 · 223 阅读 · 0 评论 -
最长不下降子序列
摘自《算法图解》的关于动态规划问题思路的一个总结: 在问题可分解为彼此独立且离散的子问题时就可用动态规划来解决, 每种动态规划解决方案都设计网格, 单元格中的值通常就是你要优化的值, 每个单元格都是一个子问题,因此应该考虑如何将问题分解为子问题,有助于找出坐标轴。 嗯,关于最长不下降子序列问题这里就不怎么解释了,直接post代码以便日后翻看:#include <cstdio...原创 2018-08-18 20:45:59 · 870 阅读 · 0 评论 -
算法复习总结(1)
入门模拟日期处理问题日期处理问题中,需要处理平年和闰年(由此产生的二月的天数的问题)、大月和小月的问题。首先,什么是闰年和平年? 小学学的东西自己都不知道。。。遇到整百年时要被400整除才是闰年,否则为平年;遇到非整百年时,只要被4整除就是闰年,否则为平年。闰年的2月有29天,平年的闰月有28天。 程序中可以通过(year % 4 == 0 && year % ...原创 2018-07-22 19:22:38 · 290 阅读 · 0 评论 -
动规求解poj_1661
POJ 1661动态规划解法题目见如下截图所示: 直接贴上代码:#include <iostream>#include <algorithm>#include <cstring>using namespace std;/***整个问题分解为两个子问题,即Jimmy所在位置下方第一块左端为起点到地面的最短时间,**和右端为起...原创 2018-03-17 14:58:27 · 221 阅读 · 0 评论 -
最长上升子序列
用动态规划来解决最长上升子序列问题的需要注意:问题是否有最优子结构性;无后效性:当前的若干个状态值一旦确定,则此后过程的演变就只和这若干个状态的值有关,和之前是采取哪种手段或经过哪种路径演变到当前的这若干个状态没有关系。递归到动规的一般方法:递归函数有n个参数,就定义一个n维的数组,数组的下标是递归函数参数的取值范围,数组元素的值是递归函数的返回值,这样就可以从边界值开始,逐步填充数...原创 2018-03-15 19:58:11 · 242 阅读 · 0 评论