小喵算法经
文章平均质量分 68
xiaoranone
知行合一,独善其身。
https://github.com/xiaorancs
展开
-
面试题目: 第一个非重复的字符
面试题目: 第一个非重复的字符面试官: 看你的简历还不错,本科也是学的计算机专业,要不咱们先做道题.我: (瑟瑟发抖)好.面试官: 给你一个字符串,请找出第一个只出现一次的字符.我: 我思考一下,如果不存在只出现一次的字符,返回什么?面试官: 返回空’ '.顺便说一下,字符串中只包含acii码字符.我: (内心独白:这个题目简单啊,可以直接暴力,管他呢,先给出一个暴力解) ok. 我可...原创 2019-03-28 10:30:22 · 577 阅读 · 0 评论 -
URL deconding URL解码
This task (the reverse of URL encoding and distinct from URL parser) is to provide a function or mechanism to convert an URL-encoded string into its original unencoded form.中文:任务是给你一个编原创 2017-03-31 20:34:32 · 1492 阅读 · 0 评论 -
ubuntu16.04 + caffe +python
安装方法1、使用Anaconda + conda自己配置相关的包,前提是安装Anacoda ,配置conda,可以直接到官网下载.sh脚本文件即可。之后执行:conda install caffe.安装方法2、使用官网的教程进行安装,但是有很多坑,这里给我的摸索之后的安装过程。根据教程安装,注意修改的步骤是,第一步:sudo apt-get install libpro原创 2017-03-24 13:09:12 · 521 阅读 · 0 评论 -
文本相似度算法的整理和python实现
中文文本相似度计算的算法:longest common subsequence https://rosettacode.org/wiki/Longest_common_subsequence#Python1、最长公共子串、编辑距离(基于原文本进行查找测试,) 可以进行改进2、分词后进行集合操作。 Jaccard相似度、3、是在分词后,得到词项的权重进行计算 结巴分词5–关键词抽取 http:原创 2017-03-28 14:08:41 · 7629 阅读 · 0 评论 -
lintcode Find the Missing Number II
Description:Giving a string with number from 1-n in random order, but miss 1 number.Find that number. Noticen Have you met this question in a real interview? Yes原创 2017-03-07 22:29:31 · 1459 阅读 · 0 评论 -
uva11995 I Can Guess the Data Structure!(try to use simple structures)
题目意思:给你一组操作,请根据操作的顺序,猜测这是何种数据结构。https://vjudge.net/problem/UVA-11995 #include #include #include #include #include #include #include #include #include原创 2017-03-01 20:44:19 · 666 阅读 · 0 评论 -
字符串总结(KMP)
字符串上的操作 *今天来总结一下关于串的问题,串包括字符串和数组 *这里一字符串为例:现在来有关字符串的一些算法 *1、逆转字符串revstr(s) *2、求字符串中的最长回文子串lhw(s) *3、求字符串的最长前缀的最长后缀lpre_Lpos(s) *4、求字符串的最长前缀的最长后缀的优美的方法和得到next的数组getnext(s,next) *5、朴素的字符串的模式匹配算法BF原创 2015-03-27 22:10:28 · 942 阅读 · 0 评论 -
基本Kmeans算法介绍及其实现
1.基本Kmeans算法[1] [cpp] view plaincopy 选择K个点作为初始质心 repeat 将每个点指派到最近的质心,形成K个簇 重新计算每个簇的质心 until 簇不发生变化或达到最大迭代次数 时间复杂度:O(tKmn),其中,t为迭代次数,K为簇的数目,m为记录数,n为维数 空间复杂度:O((m+K)n),其中,K为簇的数目,m为记录数,n为维转载 2016-01-08 22:02:01 · 619 阅读 · 0 评论 -
CSDN-->3n+1问题
3n+1题目详情:对任何一个自然数n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把(3n+1)砍掉一半。这样一直反复砍下去,最后一定在某一步得到n=1。卡拉兹在1950年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证(3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科原创 2014-05-15 09:50:41 · 929 阅读 · 0 评论 -
CSDN挑战绝对值最小
绝对值最小题目详情:给你一个数组A[n],请你计算出ans=min(|A[i]+A[j]|)(0例如:A={1, 4, -3},则:|A[0] + A[0]| = |1 + 1| = 2.|A[0] + A[1]| = |1 + 4| = 5.|A[0] + A[2]| = |1 + (-3)| = 2.|A[1] + A[1]| = |4 + 4| = 8原创 2014-05-15 09:58:16 · 822 阅读 · 0 评论 -
数学:非线性方程的求解---(笔记+代码)
code:/** *求解f(x) = x^4 - x - 2 *求解步骤 *1、对于给出的函数f(x),编写一个函数与之对应function() *2、使用给定的算法进行求解f(x) = 0 */Double function(Double x){ return pow(x,4) - x - 2;}/** *sign(x)符号函数,小于0返回0,否则返回1 */bool原创 2017-05-17 00:22:29 · 1209 阅读 · 0 评论 -
数据结构:XOR链表--- 一个空间高效的双向链表
XOR链表— 一个空间高效的双向链表传统的双向链表,要求有两个地址阈,分别存储前一个和后一个节点的地址。这里我们提到的空间高效的双向链表,仅仅为每一个节点申请一个地址空间,这空间有效的双向链表叫做XOR链表。在XOR链表中不在存储一个确定的地址,而是对于每一个节点存储前一个地址和后一个地址的XOR值。看上面的双向链表,这是原始的双向链表,下面简单介绍其和XOR链表的不同。 传统的双向链表: No原创 2017-07-02 18:58:07 · 1081 阅读 · 0 评论 -
n个热门物品中,随机选择k个物品
背景:在推荐系统中,都会维护一个热门的物品的list,可能会有很多人在这个list进行添加。有时我们需要从这个list中随机选择k个热门物品返回给用户,现在如何设计一个函数解决这个问题。我们要注意两个问题,list是增加的,对于增加的数据结构,可以选择一个链表作为基础结构,而不能选择数组。要保证每个物品别选择的概率是相同的,即每一个物品选择的概率都是k / n.(n是长度)首先定义链...原创 2018-09-19 17:21:19 · 725 阅读 · 0 评论 -
基础算法-二分查找
基础算法-二分查找二分查找算法是在实践中用的最多的算法之一。因为它简单易懂,效率很高,成为很多程序员的首选。之前我们也看到过很多关于二分查找的文章,例如你真的会二分查找吗?这个看似简单的算法,却有很多需要我们注意的地方,这里我们要思考:什么时候使用二分 ?怎么使用二分 ?二分为什么效率高?二分查找二分查找又名折办查找,是一种简单而且较有效的查找方法。要满足两点:循序结构存储,...原创 2018-11-29 15:19:42 · 339 阅读 · 0 评论 -
海量数据处理-字典树和倒排索引
海量数据处理-字典树和倒排索引海量数据处理我们已经提到过分而治之mapreduce,和排序相关的专题,今天我们来看一下之前也有简单介绍过的字典树和倒排索引。倒排索引倒排索引是一种索引方法,常用在搜索引擎中,这个数据结构是根据属性值来确定记录的位置。对于一批文档,我们的属性值就是关键字,对应值是包含该属性的文档的ID或者文化的位置。例如:T0 = {a,b,c}T1 = {a,...原创 2018-11-16 16:03:56 · 1522 阅读 · 1 评论 -
海量数据处理-重新思考排序2
海量数据处理--重新思考排序(2)如今互联网产生的数据量已经达到PB级别,如何在数据量不断增大的情况下,依然保证快速的检索或者更新数据,是我们面临的问题。在之前我们也提到过,然而在大数据处理的技术中,排序起到很重要的作用,可能不是直接使用,要不使用这用划分的思想,或者在小的方面使用到排序的方法,例如在在我们之前提到的Top k问题,用用到了堆排序中堆,在上一节介绍堆排序额时候,我们也给出了一个...原创 2018-11-08 17:14:31 · 415 阅读 · 0 评论 -
海量数据处理-重新思考排序
海量数据处理--重新思考排序(1)海量数据处理常用技术概述如今互联网产生的数据量已经达到PB级别,如何在数据量不断增大的情况下,依然保证快速的检索或者更新数据,是我们面临的问题。所谓海量数据处理,是指基于海量数据的存储、处理和操作等。因为数据量太大无法在短时间迅速解决,或者不能一次性读入内存中。在解决海量数据的问题的时候,我们需要什么样的策略和技术,是每一个人都会关心的问题。今天我们就...原创 2018-11-05 17:05:53 · 291 阅读 · 1 评论 -
海量数据处理--从分而治之到Mapreduce
海量数据处理常用技术概述如今互联网产生的数据量已经达到PB级别,如何在数据量不断增大的情况下,依然保证快速的检索或者更新数据,是我们面临的问题。所谓海量数据处理,是指基于海量数据的存储、处理和操作等。因为数据量太大无法在短时间迅速解决,或者不能一次性读入内存中。在解决海量数据的问题的时候,我们需要什么样的策略和技术,是每一个人都会关心的问题。今天我们就梳理一下在解决大数据问题的时候需要...原创 2018-11-02 19:54:53 · 1719 阅读 · 0 评论 -
海量数据处理-Topk引发的思考
海量数据处理–TopK引发的思考三问海量数据处理:什么是海量数据处理,为什么出现这种需求?如何进行海量数据处理,常用的方法和技术有什么?如今分布式框架已经很成熟了,为什么还用学习海量数据处理的技术?什么是海量数据处理,为什么出现这种需求?如今互联网产生的数据量已经达到PB级别,如何在数据量不断增大的情况下,依然保证快速的检索或者更新数据,是我们面临的问题。所谓海量数据处理,是指基...原创 2018-11-03 12:33:16 · 599 阅读 · 0 评论 -
编程之法之海量数据处理:寻找Top K的热词
题目: 有100万个关键字,长度小于50个字节。用有效的算法找出Top 10的热词,要求对内存的占用不超过1 MB。分析:这是大家面试中都被问道的问题,可以直接使用map-reducer直接解决这个问题。如果不能使用这个架构,我们手动实现,也是采用的这个思想,只是这个用文件代替节点。106∗50B=50∗106B=50MB10^6 * 50B = 50 * 10^6B = 50MB106∗...原创 2018-10-27 21:33:13 · 552 阅读 · 0 评论 -
CSDN线上编程挑战5月份月赛题目:打牌
题目详情:一群人想打斗地主和升级。已知他们已经1个、2个、3个或者4个人成为一桌了,现在要把他们全部变成3人一桌或者4人一桌,问至少移动几个人?(要保证所有人都能进行游戏)输入格式:多组数据,每组数据一行,包含4个整数a,b,c,d 0输出格式:至少移动的人数,如果不可能完成,输出-1答题说明:输入样例0 1 0 10 0 1 00原创 2014-05-19 12:30:50 · 877 阅读 · 0 评论 -
CSDN高斯公式
高斯公式发布公司:有 效 期:CSDN2014-04-24至2015-04-24难 度 等 级:答 题 时 长:编程语言要求:120分钟C C++ Java C# 题目详情高斯在上小学时发明了等差数列求和公式:1+2+..+100=5050。现在问题在于给你一个正整数n,问你他可以表示为多少种连续正整数之和?(自身也算)。输入格式原创 2014-05-23 21:16:51 · 919 阅读 · 0 评论 -
算法之浅谈递归与分治
递归?首先明白何为递归。递归有两个要点:1.自己直接或者间接地调用自己。2.必须有递归出口。优点:容易设计算法,易于思考。缺点:时间复杂度过高,运用递归时,注意数据规模。递归特点:1、问题P的描述涉及规模P(n); 2、规模变小之后,问题的性质不会发生变化; 3、问题有解决出口样例分析:一、阶乘问题 二、汉诺塔问题 三、全排列问题原创 2014-10-07 22:22:03 · 821 阅读 · 0 评论 -
落单的数
题目描述:有2n+1个数,其中2n个数两两成对,1个数落单,找出这个数。要求O(n)的时间复杂度,O(1)的空间复杂度。进阶问题:如果有2n+2个数,其中有2个数落单,该怎么办?题目分析:异或的性质,对于任意a,a^a=0; a^0=a;根据这两条性质可以写出下列代码。初阶:将2n+1个数异或起来,相同的数会抵消,异或的答案就是要找的数。进阶:假设两个不同的数是a和b,并...原创 2014-11-06 19:18:46 · 1629 阅读 · 1 评论 -
二进制数中1的个数
问题描述任意给定一个32位无符号整数n,求n的二进制表示中1的个数,比如n = 5(0101)时,返回2,n = 15(1111)时,返回4这也是一道比较经典的题目了,相信不少人面试的时候可能遇到过这道题吧,下面介绍了几种方法来实现这道题,相信很多人可能见过下面的算法,但我相信很少有人见到本文中所有的算法。如果您上头上有更好的算法,或者本文没有提到的算法,请不要吝惜您的代码,分享的时候,也转载 2014-10-21 21:53:19 · 727 阅读 · 0 评论 -
九度oj题目&吉大考研11年机试题全解
九度oj题目(吉大考研11年机试题全解)吉大考研机试2011年题目:题目一(jobdu1105:字符串的反码)、 http://ac.jobdu.com/problem.php?pid=1105 一个二进制数,将其每一位取反,称之为这个数的反码。下面我们定义一个字符的反码。如果这是一个小写字符,则它和字符'a’的距离与它的反码和字符'z’的距离相同;如果是一个大写原创 2014-10-26 11:28:54 · 1548 阅读 · 1 评论 -
九度oj题目&吉大考研10年机试题全解
吉大考研机试2010年题目题目一(jobdu1478:三角形的边)、 http://ac.jobdu.com/problem.php?pid=1478 给出三个正整数,计算最小的数加上次小的数与最大的数之差。题目分析: 简单题,可以用很多方法解决AC代码:#includeusing namespace std;i原创 2014-10-26 12:17:26 · 1845 阅读 · 0 评论 -
质数中的质数(质数筛法)
题目意思:51nod 1181. 质数中的质数(质数筛法)http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1181如果一个质数,在质数列表中的编号也是质数,那么就称之为质数中的质数。例如:3 5分别是排第2和第3的质数,所以他们是质数中的质数。现在给出一个数N,求>=N的最小的质数中的质数是多少。Inp原创 2014-11-08 21:51:38 · 1831 阅读 · 0 评论 -
字符串+数组模拟大整数乘法
C/C++中存在精度问题,很难做到大整数的加法和乘法操作,这里给出大整数的模拟乘法运算。模拟原理:模拟每一个位的值进行相乘,并使其加到对应的位置上,最后保证每一位的数都小于10,即从尾到头扫描一遍进位即可。主要代码: k=(mx-i)+(mbx-j);//相乘后的位置 c[k-1]+=sum%10; c[k]+=sum/10;原创 2014-10-22 22:32:24 · 2418 阅读 · 0 评论 -
一道有趣的算法题。。。
题目意思:用1, 2, 3 ,4 ,5, 6, 7, 8, 9 组成3个三位数 abc, def 和 ghi, 每个数字恰好使用一次,要求abc:def:ghi = 1:2:3。输出所有解。分析:模拟所有三位数,判断条件有二:一、i(abc):j(def):k(ghi)=1:2:3二、判断是否出现的1~9之间的所有数字代码:/** *一道有趣的算法题原创 2014-10-22 22:10:00 · 1356 阅读 · 10 评论 -
2014百度之星资格赛第一道Energy Conversion
Problem Description 魔法师百小度也有遇到难题的时候—— 现在,百小度正在一个古老的石门面前,石门上有一段古老的魔法文字,读懂这种魔法文字需要耗费大量的能量和大量的脑力。 过了许久,百小度终于读懂魔法文字的含义:石门里面有一个石盘,魔法师需要通过魔法将这个石盘旋转X度,以使上面的刻纹与天相对应,才能打开石门。 但是,旋转石盘需要N点能量值,而为了解读密原创 2014-05-17 12:25:53 · 873 阅读 · 0 评论 -
算法之友好数(1)
题目信息:如果两个正整数组成它们的数字和相同则称它们互为友好数,给定正整数x,求比它大的最小的友好数。例如x = 222, 输出231,因为2 + 2 + 2 = 6 = 2 + 3 + 1。输入一个正整数x,由于输入数字较大,我们用字符串作为输入,字符串不包含首'0'。 (0 解题思路:最小位减去1,次高位加上1;如果除最高位外都是0,则在最后补0即可,若原数字最低一位是0,将生成数字中原创 2014-02-09 11:14:05 · 1510 阅读 · 0 评论 -
快速幂取模算法
//计算a^bmodn int modexp_recursion(int a,int b,int n) { int t = 1; if (b == 0) return 1; if (b == 1) return a%n; t = modexp_recursion(a, b>>1转载 2014-12-21 19:53:47 · 575 阅读 · 0 评论 -
51nod 1094 和为k的连续区间(暴力和map优化)
题目意思:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1094一整数数列a1, a2, ... , an(有正有负),以及另一个整数k,求一个区间[i, j],(1 Input第1行:2个数N,K。N为数列的长度。K为需要求的和。(2 <= N <= 10000,-10^9 <= K <= 10^9原创 2014-12-09 15:22:12 · 1437 阅读 · 0 评论 -
Google 面试题 10 | 最多有k个不同字符的最长子字符串
题目描述 给定一个字符串,找到最长的包含最多k个不同字符的子串,输出最长子串的长度即可。Example: 给出字符串”eceba”,k = 2 输出答案3,最长包含最多2个不同字符的子串为”ece”。官方题解(并没有看懂): 最暴力的做法是穷举所有可能的子串,一共有n^2级别个不同的子串,然后对于每一个子串统计有多少不同的字符,如果少于k个就更新答案。这是一个三重循环的穷举,复杂度是O(n^3原创 2016-06-11 23:07:09 · 3330 阅读 · 0 评论 -
Java读取并修改图片的像素值
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl转载 2016-01-08 21:55:40 · 26928 阅读 · 8 评论 -
数论小节
总结下数论中的一些简单的知识点,留着以后忘的时候查看,如有不足之处希望大家指出,我会更加努力学习。好了不说废话了,直接给出各个函数的代码吧。 /** *@xiaoran *一直在研究数论,现在来研究一下数论中的常用算法 *数论一直是我的弱项(其实没有什么强项),吧这段时间的 *学习和以前的学习都写出来加深下印象。 *数论中最常用的算法也就是那几种。 *1、求一个原创 2015-03-22 22:33:19 · 1254 阅读 · 3 评论 -
有序和无序数组的二分搜索算法+select第k小的元素
题目意思1、给定有序数组A和关键字key,判断A中是否存在key,如果存在则返回下标值,不存在则返回-1。2、给定无序数组A和关键字key,判断A中是否存在key,如果存在则返回1,不存在则返回0。对于1、2问题,我们都可以简单的写出O(n)的从头到尾为的扫描算法,这里就不在累赘,这里我们讨论的是基于二分查找的算法,使其时间在渐进意义上达到O(logn)。对于有序的数组,很“容原创 2015-03-15 22:58:35 · 2018 阅读 · 0 评论 -
桶排序实现(没有优化)
桶排序算法主要使用在数据分布均匀的情况,这里假设输入数据的关键字全部分布在0~100之间,因此我们这里划分为十个同[0..9],存储排序,B[i][]中存放x/10==i的元素,再对*B[i]进行插入排序,复制到数组A中结束。插入排序代码(前面以给出):int InsertSort(int *a,int n){ //对长度为n的数组,进行插入排序,下标0~n-1 int i,j,ke原创 2015-03-20 23:00:06 · 1092 阅读 · 0 评论 -
堆数据结构+堆排序+最大优先队列的堆的实现
对于堆排序,首先要先知道什么是堆数据结构,堆数据结构就是一个完全二叉树,但是它有自己的性质. 例如最大堆的性质为:A[PARENT[i]]>=A[i];即每一个结点的值大于等于其左右孩子的值,小于等于其父节点的值。我们在这里只讨论最大堆的情况。我们知道一颗完全二叉树对应一个最大堆的形式,我们要做的就是将二叉树转化为最大堆,这就是所谓的最大堆的维护,我们定义函数MaxheapFY(A,i)来进行操作原创 2015-03-20 09:31:25 · 1383 阅读 · 0 评论