算法和数据结构
thinkerleo7798
这个作者很懒,什么都没留下…
展开
-
我是菜鸟之 简单循的环应用---蛇形矩阵
我是菜鸟之 简单循的环应用---蛇形矩阵原创 2015-12-21 23:00:57 · 568 阅读 · 0 评论 -
最短路径条数问题(退化Dijkstra,BFS)
#include <iostream>#include <queue>#include <cstring>using namespace std;const int N = 16;int Calc(const int G[N][N]){ int step[N]; //记录 每个节点从起点开始几步能走到 int stepNumber[N]; //记录 到每个节点的最短路有几原创 2017-09-09 16:33:18 · 3520 阅读 · 0 评论 -
LintCode Longest Common Subsequence(最长公共子序列长度,动态规划入门题)
题目Link:http://www.lintcode.com/en/problem/longest-common-subsequence/递推公式: #include <iostream>#include <cstring>using namespace std;class Solution {public: /** * @param A, B: Two strings.原创 2017-09-10 15:25:53 · 1731 阅读 · 0 评论 -
LintCode permutations(全排列)
题目地址:http://www.lintcode.com/zh-cn/problem/permutations/ 题解:不考虑重复的全排列,实质是对一棵树的深度优先搜索。class Solution {public: /** * @param nums: A list of integers. * @return: A list of permutations.原创 2017-09-12 15:19:07 · 2579 阅读 · 0 评论 -
LintCode 最长回文子串(Manacher算法)
http://www.lintcode.com/zh-cn/problem/longest-palindromic-substring/ 问题描述: 给出一个字符串(假设长度最长为1000),求出它的最长回文子串,你可以假定只有一个满足条件的最长回文串。 样例 给出字符串 “abcdzdcab”,它的最长回文子串为 “cdzdc”。最开始想到的解决办法是暴力法,但是会导致复原创 2017-10-06 22:04:16 · 816 阅读 · 0 评论 -
LintCode 字符串查找(暴力法+KMP)
URL:http://www.lintcode.com/zh-cn/problem/strstr/ 对于一个给定的 source 字符串和一个 target 字符串,你应该在 source 字符串中找出 target 字符串出现的第一个位置(从0开始)。如果不存在,则返回 -1。暴力法: 从文本串的第一个元素开始比对,如果和模式串相符,那么就是返回匹配位置,否则就是返回-1,AC代码:cl原创 2017-10-07 16:31:33 · 2614 阅读 · 0 评论 -
LintCode 二分查找
给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1。 题目地址:http://www.lintcode.com/zh-cn/problem/first-position-of-target/坑点:要查找出某元素第一次出现的位置,注意处理好边界问题class Solutio原创 2017-10-21 21:54:50 · 2619 阅读 · 0 评论 -
LintCode 二叉树的最大节点
样例 给出如下一棵二叉树: 1 / \ -5 2 / \ / \ 0 3 -4 -5 返回值为 3 的节点。URL:http://www.lintcode.com/zh-cn/problem/binary-tree-maximum-node/递归,从底下向上求最大数字class Solution {pu原创 2017-11-12 16:43:14 · 1207 阅读 · 0 评论 -
LintCode 二叉树的路径和
样例给定一个二叉树,和 目标值 = 5: 1 / \ 2 4 / \ 2 3返回:[ [1, 2, 2], [1, 4]]解法:DFS,注意路径和的概念,要到叶子节点AC代码:class Solution {public: /* * @param root: the root of bi原创 2017-11-12 19:17:11 · 380 阅读 · 0 评论 -
LintCode 最大子数组(dp)
**> 给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。 样例 给出数组[−2,2,−3,4,−1,2,1,−5,3],符合要求的子数组为[4,−1,2,1],其最大和为6**地址:http://www.lintcode.com/zh-cn/problem/maximum-subarray/递推方程:记A[] A[] 为待求数组,MaxSubArray[i] MaxSubArra原创 2017-11-05 17:09:41 · 633 阅读 · 2 评论 -
求绝对众数
问题:绝对众数指的是,给定N个数字,若某个众数出现次数大于N/2,则称这个众数为绝对众数。 举例: vec = {1,2,3,1,5,6,1,1,1,1},中有10个元素,1占了6个,所以称1为绝对众数算法:在N个元素中,删除两个不相同的数字,绝对众数不变, 分类讨论证明:被删的数字有一个是绝对众数:那么原来是绝对众数的数字的数量为N-1, (N-1)/(N-2)还是大于1/2被删的数字原创 2017-11-05 10:29:15 · 447 阅读 · 0 评论 -
N皇后问题(递归+回溯)的C++实现
N皇后问题(递归+回溯)采用C++仿函数技术实现的N皇后问题:解决问题类://多皇后问题class MultiQueens{private: vectorint> queen_vec; //保存当前各个皇后的位置 int solve; //保存解的个数 //检测当前第k个皇后的位置是否合法 bool Check(int k){原创 2018-01-08 21:20:32 · 905 阅读 · 0 评论 -
扩展型归并排序(模板+仿函数)
写了一个类似STL中的sort用法的归并排序,可以以函数形式传入排序规则。#include #include #include #include using namespace std;template typename T>class MergeSort{public: //以仿函数实现 void operator()(vector& data, funct原创 2018-02-07 16:38:32 · 274 阅读 · 0 评论 -
LintCode 带环链表(快慢指针法)
题目地址: http://www.lintcode.com/zh-cn/problem/linked-list-cycle//** * Definition of ListNode * class ListNode { * public: * int val; * ListNode *next; * ListNode(int val) { * t原创 2017-08-31 11:53:31 · 1154 阅读 · 0 评论 -
Lintcode 拓扑排序
题目网址: http://www.lintcode.com/zh-cn/problem/topological-sorting/#/** * Definition for Directed graph. * struct DirectedGraphNode { * int label; * vector<DirectedGraphNode *> neighbors; *原创 2017-09-08 00:01:21 · 2089 阅读 · 0 评论 -
Lintcode 逆波兰表达式求值
求逆波兰表达式的值。在逆波兰表达法中,其有效的运算符号包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰计数表达。您在真实的面试中是否遇到过这个题? Yes 样例 [“2”, “1”, “+”, “3”, ““] -> ((2 + 1) 3) -> 9 [“4”, “13”, “5”, “/”, “+”] -> (4 + (13 / 5)) -> 6简单的退栈和入栈的原创 2017-08-23 11:46:00 · 1529 阅读 · 0 评论 -
我是菜鸟 之输入几个数,在数组中去重并且统计出现的次数
想到一个问题:输入组数字,如何去重并且统计出现的次数呢? 最早想到的是:N个数遍历查找N次,但这种算法的复杂度较高且不灵活。 于是辣鸡的我想了这个办法:#include<stdio.h>#include<stdlib.h> int main() { int flag; int b[100],n,N=0; //这里的数组b中存着要处理的数,N是有N个不同的数原创 2015-12-23 15:54:23 · 472 阅读 · 0 评论 -
我是菜鸟 之 hdu 1856 并查集 裸题
算法 hdu 1856 并查集原创 2015-12-26 23:57:46 · 491 阅读 · 0 评论 -
从两道简单HDU题来了解贪心思想
呵呵,貌似学校OJ上的水题已经刷的差不多了。 从两道简单的贪心题开始,觉得自己要开始学习些新算法姿势了。 那这一篇blog就说说简单的贪心吧。第一题世界杯来了,球迷的节日也来了,估计很多ACMer也会抛开电脑,奔向电视了。作为球迷,一定想看尽量多的完整的比赛,当然,作为新时代的好青年,你一定还会看一些其它的节目,比如新闻联播(永远不要忘记关心国家大事)、原创 2016-01-02 23:59:02 · 724 阅读 · 0 评论 -
快速排序算法
快排其实已经接触了好一段时间了,但是一直没有搞懂其思想,最近几天写了几次快排,懂了一些,所以写一篇blog记录下,之后理解更深了就再写一篇吧。原创 2016-01-08 00:34:00 · 397 阅读 · 0 评论 -
SICP 2.42 “八皇后问题”及“n皇后问题”
八皇后问题: 在国际象棋棋盘(8x8)上,摆八个皇后,任意一个皇后都不能攻击另一个皇后(也就是说:任意两个皇后都不能在同一行,不能在同一列 ,不能在同一对角线) 递归地解释这个问题:假设我们已经生成了棋盘k-1列中k-1个皇后的所有可能方式,现在需 要的就是对其中每种方式,生成出将下一个皇后放在k列每一行的扩充集合。把每次递归过程抽象为几步:(k-1)行前的皇后位置表和第k行组合成所有可能的位原创 2017-01-19 00:10:30 · 1187 阅读 · 0 评论 -
SICP 建立二叉查找(排序)树
二叉排序树或者是一棵空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于或等于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值; (3)左、右子树也分别为二叉排序树; 在scheme和其他lisp家族语言中,二叉树常用list(列表)的嵌套来表示二叉树。 二叉树有三个节点,用scheme代码表示:(define (ent原创 2017-01-29 22:55:37 · 493 阅读 · 0 评论 -
Lintcode 二叉树的层次遍历
给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问)您在真实的面试中是否遇到过这个题? Yes 样例 给一棵二叉树 {3,9,20,#,#,15,7} :3 / \ 9 20 / \ 15 7 返回他的分层遍历结果:[ [3], [9,20], [15,7] ]code:class Solution{public: vector< v原创 2017-08-18 15:06:21 · 307 阅读 · 0 评论 -
Lintcode 二叉树的层次遍历 II
给出一棵二叉树,返回其节点值从底向上的层次序遍历(按从叶节点所在层到根节点所在的层遍历,然后逐层从左往右遍历)您在真实的面试中是否遇到过这个题? Yes 样例 给出一棵二叉树 {3,9,20,#,#,15,7},3/ \ 9 20 / \ 15 7 按照从下往上的层次遍历为:[ [15,7], [9,20], [3] ]只需要稍微修改 二叉原创 2017-08-18 15:25:17 · 1058 阅读 · 0 评论 -
Lintcode 二叉树的锯齿形层次遍历
给出一棵二叉树,返回其节点值从底向上的层次序遍历(按从叶节点所在层到根节点所在的层遍历,然后逐层从左往右遍历)您在真实的面试中是否遇到过这个题? Yes 样例 给出一棵二叉树 {3,9,20,#,#,15,7},3 / \ 9 20 / \ 15 7 按照从下往上的层次遍历为:[ [15,7], [9,20], [3] ]思路:在题原创 2017-08-18 15:53:41 · 1035 阅读 · 0 评论 -
Lintcode 二叉树的中序遍历(递归+非递归)
给出一棵二叉树,返回其中序遍历您在真实的面试中是否遇到过这个题? Yes 样例 给出二叉树 {1,#,2,3},1 \ 2 / 3 返回 [1,3,2].递归+非递归:/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode原创 2017-08-20 15:15:21 · 313 阅读 · 0 评论 -
Lintcode 用栈实现队列
巨水题,思路:一个栈缓存,一个栈当队列class MyQueue {public: stack<int> stack1; stack<int> stack2; MyQueue() { // do intialization if necessary } void push(int element) { // write your原创 2017-08-21 13:41:28 · 236 阅读 · 0 评论 -
Lintcode 有效的括号序列
给定一个字符串所表示的括号序列,包含以下字符: ‘(‘, ‘)’, ‘{‘, ‘}’, ‘[’ and ‘]’, 判定是否是有效的括号序列。您在真实的面试中是否遇到过这个题? Yes 样例 括号必须依照 “()” 顺序表示, “()[]{}” 是有效的括号,但 “([)]”则是无效的括号。题目很简单,用栈就OK了。 但是为了不让代码很丑而且让这个程序有一定扩展性,所以代码写多了些。class原创 2017-08-21 16:04:51 · 1131 阅读 · 0 评论 -
AES加密算法(Rijndael算法)
此文章为转载,如有侵权,通知删除原地址:https://blog.csdn.net/zfpigpig/article/details/8526016上周好几天都在搞AES,总算是把Rijndael算法搞明白了。本片会仔细介绍AES(Rijndael算法),后两篇会介绍AES的java和php实现。AES(Rijndael算法)Rijndael算法转载 2018-05-09 14:52:32 · 14720 阅读 · 2 评论