算法与数据结构
Tangocc
@GitHub: tangocc.github.io
@baiduer
展开
-
卡尔曼算法精讲与C++实现
卡尔曼滤波器是一个“optimal recursive data processing algorithm(最优化自回归数据处理算法)”。对于解决很大部分的问题,他是最优,效率最高甚至是最有用的。他的广泛应用已经超过30年,包括机器人导航,控制,传感器数据融合甚至在军事方面的雷达系统以及导弹追踪等等。近年来更被应用于计算机图像处理,例如头脸识别,图像分割,图像边缘检测等等。原创 2017-12-05 17:07:32 · 3786 阅读 · 1 评论 -
【编程题】 膨胀的牛牛
牛牛以草料为食。牛牛有一天依次遇到n堆被施展了魔法的草料,牛牛只要遇到一堆跟他当前相同大小的草料,它就会把草料吃完,而使自己的大小膨胀一倍。一开始牛牛的大小的是A,然后给出牛牛依次遇到的n堆草料的大小。请计算牛牛最后的大小。 输入描述:输入包括两行,第一行包含两个整数n和A(1 ≤ n ≤ 200, 1 ≤ A ≤ 1,000,000,000)第二行包括n个整数,表示牛牛依次遇到的草原创 2017-06-20 22:51:13 · 419 阅读 · 0 评论 -
【编程题】 黑化的牛牛
牛牛变得黑化了,想要摧毁掉地球。但他忘记了开启地球毁灭器的密码。牛牛手里有一个字符串S,牛牛还记得从S中去掉一个字符就恰好是正确的密码,请你帮牛牛求出他最多需要尝试多少次密码。如样例所示S = "ABA",3个可能的密码是"BA", "AA", "AB".当S = "A", 牛牛唯一可以尝试的密码是一个空的密码,所以输出1. 输入描述:输入包括一个字符串S,字符串长度lengt原创 2017-06-20 22:43:24 · 820 阅读 · 0 评论 -
【编程题】调整红白蓝三色
/*******************思想: 1.设置两个指针 start指向第一个元素 end指向最后一个元素 2.start找到非0元素,end找到0元素 3.交换两者,回到2 4.此时所有0元素在开头,继续遍历交换 1 2 元素 时间复杂度: O(2n)**********************/void sortColors(vector&原创 2017-05-31 20:35:06 · 601 阅读 · 0 评论 -
【编程题】字符串编码
给定一个字符串,请你将字符串重新编码,将连续的字符替换成“连续出现的个数+字符”。比如字符串AAAABCCDAA会被编码成4A1B2C1D2A。 输入描述:每个测试输入包含1个测试用例每个测试用例输入只有一行字符串,字符串只包括大写英文字母,长度不超过10000。输出描述:输出编码后的字符串输入例子:AAAABCCDAA输出例子:4原创 2017-05-18 21:03:12 · 398 阅读 · 0 评论 -
【编程题】字符串分类
牛牛有N个字符串,他想将这些字符串分类,他认为两个字符串A和B属于同一类需要满足以下条件:A中交换任意位置的两个字符,最终可以得到B,交换的次数不限。比如:abc与bca就是同一类字符串。现在牛牛想知道这N个字符串可以分成几类。 输入描述:首先输入一个正整数N(1 输出描述:输出一个整数表示分类的个数。输入例子:4abcdabdcdab原创 2017-05-18 20:02:21 · 790 阅读 · 0 评论 -
【编程题】最长公共连续子串
牛牛有两个字符串(可能包含空格),牛牛想找出其中最长的公共连续子串,希望你能帮助他,并输出其长度。 输入描述:输入为两行字符串(可能包含空格),长度均小于等于50.输出描述:输出为一个整数,表示最长公共连续子串的长度。输入例子:abcdeabgde输出例子:2#include #include #include using namespace原创 2017-05-18 19:37:14 · 600 阅读 · 0 评论 -
【网易笔试】
小易有一块n*n的棋盘,棋盘的每一个格子都为黑色或者白色,小易现在要用他喜欢的红色去涂画棋盘。小易会找出棋盘中某一列中拥有相同颜色的最大的区域去涂画,帮助小易算算他会涂画多少个棋格。 输入描述:输入数据包括n+1行:第一行为一个整数n(1 ≤ n ≤ 50),即棋盘的大小接下来的n行每行一个字符串表示第i行棋盘的颜色,'W'表示白色,'B'表示黑色输出描述:输出小易原创 2017-05-04 22:32:11 · 838 阅读 · 0 评论 -
【网易笔试】
/*********************************************************常规的表达式求值,我们都会根据计算的优先级来计算。比如*/的优先级就高于+-。但是小易所生活的世界的表达式规则很简单,从左往右依次计算即可,而且小易所在的世界没有除法,意味着表达式中没有/,只有(+, - 和 *)。现在给出一个表达式,需要你帮忙计算出小易所在的世界这个表达式的值原创 2017-05-04 22:26:57 · 579 阅读 · 0 评论 -
【网易笔试】小易最近在数学课上学习到了集合的概念
/*****************************************************小易最近在数学课上学习到了集合的概念,集合有三个特征:1.确定性 2.互异性 3.无序性.小易的老师给了小易这样一个集合:S = { p/q | w ≤ p ≤ x, y ≤ q ≤ z }需要根据给定的w,x,y,z,求出集合中一共有多少个元素。小易才学习了集合还解决不了这原创 2017-05-04 22:23:41 · 556 阅读 · 0 评论 -
【网易笔试】移除重复元素
/**************************************************************小易有一个长度为n序列,小易想移除掉里面的重复元素,但是小易想是对于每种元素保留最后出现的那个。小易遇到了困难,希望你来帮助他。 输入描述:输入包括两行:第一行为序列长度n(1 ≤ n ≤ 50)第二行为n个数sequence[i](1 ≤ sequen原创 2017-05-04 20:19:54 · 362 阅读 · 0 评论 -
【网易笔试】小朋友排列为一个队伍
/*****************************************************************8在幼儿园有n个小朋友排列为一个队伍,从左到右一个挨着一个编号为(0~n-1)。其中有一些是男生,有一些是女生,男生用'B'表示,女生用'G'表示。小朋友们都很顽皮,当一个男生挨着的是女生的时候就会发生矛盾。作为幼儿园的老师,你需要让男生挨着女生或者女生挨着男生的原创 2017-05-04 20:21:59 · 1127 阅读 · 0 评论 -
【网易笔试】
/*********************************************************终于到周末啦!小易走在市区的街道上准备找朋友聚会,突然服务器发来警报,小易需要立即回公司修复这个紧急bug。假设市区是一个无限大的区域,每条街道假设坐标是(X,Y),小易当前在(0,0)街道,办公室在(gx,gy)街道上。小易周围有多个出租车打车点,小易赶去办公室有两种选择,一种原创 2017-05-04 20:23:43 · 270 阅读 · 0 评论 -
【编程题】 丑陋的字符串
牛牛喜欢字符串,但是他讨厌丑陋的字符串。对于牛牛来说,一个字符串的丑陋值是字符串中相同连续字符对的个数。比如字符串“ABABAABBB”的丑陋值是3,因为有一对"AA"和两对重叠的"BB"。现在给出一个字符串,字符串中包含字符'A'、'B'和'?'。牛牛现在可以把字符串中的问号改为'A'或者'B'。牛牛现在想让字符串的丑陋值最小,希望你能帮帮他。 输入描述:输入包括一个字符串s,字符串原创 2017-06-26 22:05:34 · 639 阅读 · 0 评论 -
数组字符串那些经典算法:最大子序列和,最长递增子序列,最长公共子串,最长公共子序列,字符串编辑距离,最长不重复子串,最长回文子串
0、前言 这一部分的内容原本是打算在之后的字符串或者数组专题里面写的,但看着目前火热进行的各家互联网公司笔试面试中,出现了其中的一两个内容,就随即将这些经典问题整理整理,单写一篇发上来了。这里争取覆盖面广一些,列举了7个最经典的问题,也会是之后大家笔试面试常见到的问题,而每个问题下都列举了几种思路,掌握这些经典问题的解题思路和算法相信对同类型问题的解答都能有帮助。转载 2017-09-08 08:21:28 · 492 阅读 · 0 评论 -
卡尔曼滤波经典讲解,C++算法实现
在学习卡尔曼滤波器之前,首先看看为什么叫“卡尔曼”。跟其他著名的理论(例如傅立叶变换,泰勒级数等等)一样,卡尔曼也是一个人的名字,而跟他们不同的是,他是个现代人!卡尔曼全名Rudolf Emil Kalman,匈牙利数学家,1930年出生于匈牙利首都布达佩斯。1953,1954年于麻省理工学院分别获得电机工程学士及硕士学位。1957年于哥伦比亚大学获得博士学位。我们现在要学习的卡尔曼滤波器转载 2016-11-15 21:54:04 · 23021 阅读 · 24 评论 -
【优酷面试题】整形数组重排,求最小值
/******************************优酷面试题:整形数组重组,求最小值。题目:含有N个元素的整形数组,将这个n个元素重新组合,求出最小的数,如【321,3,32】,最小的数为321323*********************************//***********************思想:1.将整数数组转化为字符串数组(避免组合后超过最大整数原创 2017-02-20 20:02:14 · 521 阅读 · 0 评论 -
【编程题】字符串排列组合
/*************************字符组合问题输入一个字符串,长度为n,选出m个字符组合*******************************//**************************思想: 1.递归算法 2.依次遍历字符串 对于当前字符str[ii],我们有两种选择 一种是 选择该字符(即是将字符加入结果集)原创 2017-03-08 22:30:47 · 432 阅读 · 0 评论 -
最长公共子串
/********************************************************问题描述:牛牛有两个字符串(可能包含空格),牛牛想找出其中最长的公共连续子串,希望你能帮助他,并输出其长度。 输入描述:输入为两行字符串(可能包含空格),长度均小于等于50.输出描述:输出为一个整数,表示最长公共连续子串的长度。输入例子:abcde原创 2017-05-02 20:52:26 · 261 阅读 · 0 评论 -
【牛客网】创造新世界
/*******************************************************************问题描述:众所周知计算机代码底层计算都是0和1的计算,牛牛知道这点之后就想使用0和1创造一个新世界!牛牛现在手里有n个0和m个1,给出牛牛可以创造的x种物品,每种物品都由一个01串表示。牛牛想知道当前手中的0和1可以最多创造出多少种物品。 输入描述原创 2017-05-03 16:30:31 · 429 阅读 · 0 评论 -
【编程题】二叉树最近公共父亲节点
//Definition for a binary tree node. struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} };TreeNode* lowestC原创 2017-05-29 22:57:16 · 491 阅读 · 0 评论 -
【编程题】Single Element in a Sorted Array
/****************思想: 抑或操作复杂度: O(n)************************/int singleNonDuplicate(vector& nums) {int size = nums.size();int ans = nums[0];for (int ii = 1; ii {ans ^= nums[ii原创 2017-05-31 20:40:57 · 424 阅读 · 0 评论 -
【编程题】黑白卡片
牛牛有n张卡片排成一个序列.每张卡片一面是黑色的,另一面是白色的。初始状态的时候有些卡片是黑色朝上,有些卡片是白色朝上。牛牛现在想要把一些卡片翻过来,得到一种交替排列的形式,即每对相邻卡片的颜色都是不一样的。牛牛想知道最少需要翻转多少张卡片可以变成交替排列的形式。 输入描述:输入包括一个字符串S,字符串长度length(3 ≤ length ≤ 50),其中只包含'W'和'B'两种字符原创 2017-06-20 22:30:42 · 1335 阅读 · 0 评论 -
【编程题】数组中是否含有该整数
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。bool Find(int target, vector > array) {if (array == NULL || array.size() == 0){return false;}int line = arr原创 2017-07-09 17:22:52 · 289 阅读 · 0 评论 -
【编程题】根据前序中序重建二叉树
TreeNode* reConstructBinaryTree(vector pre,vector vin) { return constructBinaryTree(pre,vin); } TreeNode* constructBinaryTree(const vector &pre,const vector &vin){原创 2017-07-10 23:39:39 · 304 阅读 · 0 评论 -
编程题集合
树:最近公共祖先节点 : http://blog.csdn.net/u013291818/article/details/72805504中缀表达式 :http://www.cnblogs.com/mygmh/archive/2012/10/06/2713362.html矩阵链乘法:http://blog.csdn.net/qq_18738333/article原创 2017-09-14 10:01:25 · 302 阅读 · 0 评论 -
动态规划算法
最近准备工作面试,学习动态规划算法,虽然思想倒是很好理解,但当遇到问题时,自己却无从下手,直至一天,天空划过一道闪电,文思泉涌,终于理解到动态规划的思想精髓,遂记录下来,以一个新手学习的过程理解动态规划。重点在以容易理解的角度出发。0-1背包问题、青蛙跳台阶问题、换零钱问题(最小张数、最多方法数)原创 2017-02-26 15:58:34 · 704 阅读 · 0 评论 -
【华为笔试】抢占式任务调度
/****************************************************************************问题描述://抢占式任务调度//输入: 第一行 :n任务数//接下来n行是任务信息 时间单位为 秒//任务号 优先级 开始时间 运行时间//输出:前200s 任务调度顺序********************原创 2017-05-03 18:49:57 · 913 阅读 · 0 评论 -
拼接三角形
/*********************************************************************************问题描述:牛牛手里有N根木棒,分别编号为1~N,现在他从N根里想取出三根木棒,使得三根木棒构成一个三角形,你能计算出牛牛有多少种取法吗?(考虑两种取法中使用的木棒编号有一个不一样就认为是不同的取法)。 输入描述:首先原创 2017-05-02 21:20:08 · 774 阅读 · 0 评论 -
[a, b]区间内找到一些数满足可以被一个整数c整除
/*****************************************************************问题描述:牛牛想在[a, b]区间内找到一些数满足可以被一个整数c整除,现在你需要帮助牛牛统计区间内一共有多少个这样的数满足条件? 输入描述:首先输入两个整数a,b,(-5*10^8 ≤ a ≤ b ≤ 5*10^8)接着是一个正整数c(1原创 2017-05-02 21:11:38 · 3976 阅读 · 0 评论 -
【LeetCode 67】 Add Binary
/**************************LeetCode 67 Add BinaryGiven two binary strings, return their sum (also a binary string).For example,a = "11"b = "1"Return "100".***********************************/原创 2017-02-22 20:14:32 · 255 阅读 · 0 评论 -
【腾讯校招】调整大小写字符
/*************************[腾讯校招]把一个字符串的大写字母放到字符串的后面,各个字符法相对位置不变,求不能申请额外的空间。**********************************/ void AdjustUpperAndLower(char* str){ for (int ii = 0; ii strlen(str); ii++) { i原创 2017-02-13 22:01:25 · 323 阅读 · 0 评论 -
【腾讯校招】随机音乐播放
/*****************************[腾讯校招]如何实现一个随机播放音乐,要求能够方便查看上一首播放的是什么方便交换即将播放的歌曲顺序***************************************/#define numOfMusic 10void RandomMusic(){ int playOrder[numOfMusic]; int t原创 2017-02-13 21:56:40 · 557 阅读 · 0 评论 -
【LeetCode 16】 threeSumClosest
/***********************************LeetCode 16 threeSumClosestGiven an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the sum of the原创 2017-02-21 23:36:12 · 351 阅读 · 1 评论 -
【LeetCode 12】 Integer to Roman
/****************************LeetCode 12 Integer to RomanGiven an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 to 3999.**********************/string原创 2017-02-21 22:43:21 · 242 阅读 · 0 评论 -
【LeetCode 13】 Roman to Integer
/****************************LeetCode 13 Roman to Integer Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999.**********************/ int原创 2017-02-21 22:31:50 · 189 阅读 · 0 评论 -
【LeetCode 25】 Reverse Nodes in K-Group
/****************************LeetCode 25 Reverse Nodes in K-Group 题目:Given a linked list, reverse the nodes of a linked list k at a time and return its modified list.k is a positive integer and is原创 2017-02-21 22:19:12 · 281 阅读 · 0 评论 -
【LeetCode 76】 Minimum Window Substring
/******************************LeetCode 76. Minimum Window SubstringGiven a string S and a string T, find the minimum window in S which will contain all the characters in T in complexity O(n). For原创 2017-03-01 22:16:11 · 216 阅读 · 0 评论 -
【LeetCode 459】 Repeated Substring Pattern
/*********************************459. Repeated Substring PatternGiven a non-empty string check if it can be constructed by taking a substring of it and appending multiple copies of the substring to原创 2017-02-28 21:32:11 · 293 阅读 · 0 评论 -
【LeetCode 358】 Rearrange String k Distance Apart
/******************************LeetCode 358 Rearrange String k Distance Apart******************************//******************************思想:1.建立map,遍历字符串,统计字符出现的次数2.定义一个数组nextPosition[26],存储字符原创 2017-02-28 18:59:27 · 557 阅读 · 0 评论