先从图的表示开始吧。 图是这个分类下几乎所有文章的基础。《算法导论(第三版)》第22章对图进行了介绍,这里就简单提一下,毕竟也不难(连我这个高中生都理解了)。 分割线 这就是一张普通的图。 我们的目标是把它在程序中表示出来: 表示图的方法主要有两种,一种方法是用链表(原谅我拙劣的作图技术):在C++ ...
分类:
其他好文 时间:
2018-12-01 20:19:45
阅读次数:
190
[TOC] 简介 中缀表达式(正常的表达式) $$ (1+2) 3 4 $$ 前缀表达式(运算符位于操作数之前) $$ +1234 $$ 后缀表达式(运算符位于操作数之后) $$ 12+3 4 $$ 前缀表达式计算 从右向左遍历,遇到数字的时候,将数字入栈,遇到运算符的时候,弹出栈顶两个数字运算,将 ...
分类:
编程语言 时间:
2018-12-01 18:35:56
阅读次数:
233
1. 单调栈 它能解决问题就是在 O(N) 的时间复杂度内,找到离一个数数最近的左右两个比它大或者小(或者说更强的数)(找比它大的数的时候,强就是比它大,同理小也一样)。 不要求是数组,数据流也一样的。 比如说给了一个数组,找到一个数离它最近的最大的左右两个数。eg, [1, 3, 2, 0, 9, ...
分类:
编程语言 时间:
2018-11-28 20:39:31
阅读次数:
130
1. 如何判断一个图是二分图(染色问题)leetcode 886 possible bipartition 题解:我们用一个color数组标记点的颜色,然后对每一个点做bfs,如果两个点间有边,并且另外一个点没有被染色,就把另外一个点染色成相反色,如果另外一个点有颜色,而且颜色和当前结点相同,那么肯 ...
分类:
编程语言 时间:
2018-11-21 16:03:55
阅读次数:
258
与、或、异或运算 1.与运算(&) 参加运算的两个数据,按二进制位进行“与”运算。 运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1; 即:两位同时为“1”,结果才为“1”,否则为0 例如:3&5 即 0000 0011 & 0000 0101 = 0000 0001 因此,3&5的值 ...
分类:
编程语言 时间:
2018-11-17 00:27:13
阅读次数:
154
2018-11-12 20:11:11 数学,特别是数论和计算机科学有着密切的联系,所以也常被选做题材。虽然数学问题大多需要使用特定方法求解,但其中有几个基础算法扮演着重要的角色。 一、辗转相除法 1、求最大公约数 让我们来看一下如下的问题。 问题描述: 给定平面上的两个格点P1(x1, y1)和P ...
分类:
其他好文 时间:
2018-11-14 01:09:12
阅读次数:
171
字符串:https://www.cnblogs.com/zhangwanying/p/6472455.html 图论: 动态规划: ...
分类:
编程语言 时间:
2018-11-03 01:57:32
阅读次数:
177
[1] Manacher 求一个字符串中的最长回文子串。 讲解直接放ppt,复习能回忆起来就行。 1 #include <iostream> 2 #include <string> 3 #include <vector> 4 #include <algorithm> 5 using namespac ...
分类:
编程语言 时间:
2018-11-03 01:51:35
阅读次数:
148
二分法思想是个基础但又极其重要的思想,C++,Java,数据结构,算法设计等多门课程都详细地讲述了一遍二分法。 对于一个已排序的长数组来说,二分法其O(NlogN)的时间复杂度,对于效率的提升是毋庸置疑的,而且二分法用途广泛,实用且方便。但这一切的前提是数组已排序,对于无序表与链表,二分法便无能为力 ...
分类:
其他好文 时间:
2018-10-15 00:39:13
阅读次数:
162
很久没写博客了,也很久没有静下心来学习技术,具体原因不再多纠结。 最近完成零丁任务之余每天刷一刷LeetCode,看看书(比如这篇记录的是左程云大佬的《程序员代码面试指南》中的内容) 温习和学习一些算法以及相关知识,巩固一下基础。 算法的程序代码大多不是自己初次AC所写,因为在翻阅书籍和欣赏disc ...
分类:
其他好文 时间:
2018-10-12 21:19:50
阅读次数:
192