自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

转载 用Python实现一个爬虫爬取ZINC网站进行生物信息学数据分析

  最近接到实验室的导师交给我的一个任务,就是他们手头有很多smile表达式,格式类似这种:C(=C(c1ccccc1)c1ccccc1)c1ccccc1(这是生物信息学中表达小分子结构的一种常用表达式),他们需要对每个smile表达式在ZINC网站(生物信息学数据网站)上进行搜索,然后找到对应的...

2019-06-02 12:34:00 93 0

转载 Java实现锁、公平锁、读写锁、信号量、阻塞队列、线程池等常用并发工具

锁的实现 锁的实现其实很简单,主要使用Java中synchronized关键字。 public class Lock { private volatile boolean isLocked = false; private Thread lockingThread = null...

2019-05-09 19:07:00 50 0

转载 自己动手实现一个轻量级的RPC框架

前言 最近学习RPC的时候,自己手动写了一个简易的RPC框架,详细代码可见GitHub:https://github.com/Jeysin/RPC。以下是这个项目的README: 简介 Java语言编写的一个轻量级的RPC框架,基于TCP协议,与SpringBoot集成,让远程调用像本地调用一样便...

2019-02-25 10:54:00 47 0

转载 Java 8新特性stream API用法总结

前言   Stream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念。它也不同于 StAX 对 XML 解析的 Stream,也不是 Amazon Kinesis 对大数据实时处理的 Stream。Java ...

2018-12-22 17:37:00 22 0

转载 自己动手实现一个轻量级Spring IOC容器

  最近在学Spring框架,相信学习过Spring的同学都对Spring中的IOC容器印象深刻,它像一个黑盒一样,可以从我们的xml配置文件中读取bean,并将相应的属性注入到bean中。那么这是如何实现的呢,本文将通过一个小例子仿照Spring的方式实现一个简单的IOC容器,使其具有IOC容器...

2018-12-09 15:08:00 26 0

转载 如何在Spring中使用自定义标签

  最近学习了一下如何在spring的xml文件中使用自定义的标签,把自己操作的过程记录下来。开始之前,最好先对spring的xml文件的格式有所了解,已经有文章写得很好了,这里不再赘述,详见:https://www.cnblogs.com/gonjan-blog/p/6637106.html。 ...

2018-12-02 13:58:00 21 0

转载 Dijkstra 最短路径算法

详见:http://wiki.jikexueyuan.com/project/easy-learn-algorithm/dijkstra.html 1 #include<iostream> 2 #include<vector> 3 using namespa...

2018-08-14 17:04:00 19 0

转载 Floyd 最短路径算法

详见:http://wiki.jikexueyuan.com/project/easy-learn-algorithm/floyd.html 1 #include<iostream> 2 #include<vector> 3 using namespace ...

2018-08-14 16:10:00 16 0

转载 395. 硬币排成线 II

395.硬币排成线 II 有n个不同价值的硬币排成一条线。两个参赛者轮流从左边依次拿走 1 或 2 个硬币,直到没有硬币为止。计算两个人分别拿到的硬币总价值,价值高的人获胜。 请判定第一个玩家是输还是赢? 样例 给定数组 A =[1,2,2], 返回true. 给...

2018-08-13 18:16:00 39 0

转载 nodejs+express搭建一个高性能WebServer

  由于最近的项目中要用到nodejs做一个WebServer服务器,所以最近学习了一下nodejs的语法和express框架。学习的过程中也参考了许多文章博客,同时也有一些自己的心得体会,现在都一一记录下来。   首先,第一个问题,为什么选了nodejs来做WebServer?或者换一种说法,...

2018-07-17 15:08:00 24 0

转载 LintCode:Android Unlock Patterns

Given an Android3x3key lock screen and two integersmandn, where1 ≤ m ≤ n ≤ 9, count the total number of unlock patterns of the Android lock screen, w...

2018-03-27 10:41:00 32 0

转载 LintCode:寻找丢失的数 II

寻找丢失的数 II 给一个由 1 -n的整数随机组成的一个字符串序列,其中丢失了一个整数,请找到它。 注意事项 n <= 30 您在真实的面试中是否遇到过这个题? Yes 样例 给出 n =20, str =19201234567...

2018-03-26 21:36:00 17 0

转载 非递归实现数字的全排列

  首先,对于数字1,2,3,4而言,如果我们能求出其下一个排列,那么不断地求其下一个排列,得到的就是全排列,关于怎么求一个排列的下一个排列,见:http://www.cnblogs.com/jeysin/p/8647879.html. 基于这种思路,可以用非递归的方式实现求数字的全排列,以下是具...

2018-03-26 10:43:00 26 0

转载 LintCode:下一个排列

下一个排列 给定一个整数数组来表示排列,找出其之后的一个排列。 注意事项 排列中可能包含重复的整数 您在真实的面试中是否遇到过这个题? Yes 样例 给出排列[1,3,2,3],其下一个排列是[1,3,3,2] 给出排列[4,3,2,...

2018-03-26 10:24:00 17 0

转载 LintCode:排列序号

排列序号I 给出一个不含重复数字的排列,求这些数字的所有排列按字典序排序后该排列的编号。其中,编号从1开始。 您在真实的面试中是否遇到过这个题? Yes 样例 例如,排列[1,2,4]是第1个排列。 思路:康托展开的应用,关于康托展开,见:http://...

2018-03-25 23:29:00 19 0

转载 康托展开式及其逆过程

康托展开式:   X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! ,其中a[i]表示在未出现的元素中比当前元素小的个数。康托展开式可用于求一个排列位于全排列的第几个。同样,其逆过程可以求在全排列中的第k个排列是多少。具体实现如下: ...

2018-03-25 15:18:00 18 0

转载 网易笔试题:推箱子

大家一定玩过“推箱子”这个经典的游戏。具体规则就是在一个N*M的地图上,有1个玩家、1个箱子、1个目的地以及若干障碍,其余是空地。玩家可以往上下左右4个方向移动,但是不能移动出地图或者移动到障碍里去。如果往这个方向移动推到了箱子,箱子也会按这个方向移动一格,当然,箱子也不能被推出地图或推到障碍里。...

2018-03-19 18:22:00 49 0

转载 C++11新特性atomic和thread

  今天才发现C++11原来支持原子操作,还支持thread类创建线程,真的是越来越6了。之前做项目的时候创建线程都是用POSIX标准的pthread_create函数,然后线程同步一般用的都是pthread_mutex。今天又get了一个新技能,可以用thread类来创建线程,用atomic_f...

2018-03-17 16:20:00 22 0

转载 有趣的排序

度度熊有一个N个数的数组,他想将数组从小到大排好序,但是萌萌的度度熊只会下面这个操作:任取数组中的一个数然后将它放置在数组的最后一个位置。问最少操作多少次可以使得数组从小到大有序? 输入描述: 首先输入一个正整数N,接下来的一行输入N个整数。(N <= 50, 每个数的绝对值小于等于10...

2018-03-12 12:02:00 20 0

转载 最长公共子序列、最长公共子串、最小编辑距离三种算法总结

  最长公共子序列、最长公共子串、最小编辑距离是三种常见的字符串比较算法,考虑到其中的动态规划思想、状态转移方程比较类似,实现的方法也是如出一辙,这里将其状态转移方程和相应的实现代码做一个总结。 1、最长公共子序列(longest common sequence)   状态转移方程:  ...

2018-03-11 16:38:00 68 0

转载 删除字符构造回文

给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢?输出需要删除的字符个数。 如: 输入例子1: abcda google 输出例子1: 2 2思路:回文串即正序和逆序一样的字符串,考虑将字符串S置逆后求其与原字符串的最长公共子序...

2018-03-11 15:44:00 25 0

转载 KMP算法实现

  KMP算法主要是用来解决在一个字符串中是否包含另一个字符串的问题,即在字符串str1中是否包含有str2,如果包含,返回str2在str1中的起始位置,如果不包含,返回-1。KMP算法主要通过一个next数组实现匹配加速,next数组记录下str2中对应每一个字符相应的最长前缀和最长后缀相匹配...

2018-02-28 09:29:00 13 0

转载 快速排序的非递归实现

  快速排序的递归实现在数据量非常大的时候往往因为递归的层数过多而导致栈溢出,可以考虑模拟递归栈的调用,用一个堆空间中的辅助栈保存每次计算的中间参数,将快排改为非递归版本,实现如下: 1 int Partition(vector<int> &numbers, int b...

2018-02-27 16:57:00 21 0

转载 二叉树的前中后序遍历非递归实现

1、前序遍历非递归实现 1 class Solution { 2 public: 3 /* 4 * @param root: A Tree 5 * @return: Preorder in ArrayList which contains nod...

2018-02-06 14:07:00 15 0

转载 LintCode:统计数字

计算数字k在0到n中的出现的次数,k可能是0~9的一个值 例如n=12,k=1,在[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],我们发现1出现了5次(1, 10, 11, 12) 思路:参考《编程之美》中提供的求数字1的个数的解法:htt...

2018-02-05 23:00:00 16 0

转载 按之字形顺序打印二叉树

题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 思路:基于按层遍历,增加一个flag标记,如果是偶数层就置逆以后再输出 1 /* 2 struct TreeNod...

2018-02-04 11:24:00 12 0

转载 二叉树中序遍历的下一个节点

题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 思路:分多种情况讨论 1 /* 2 struct TreeLinkNode { 3 int val; 4 ...

2018-02-04 11:03:00 13 0

转载 二叉搜索树的第k个节点

题目描述 给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。 思路:中序遍历 1 /* 2 struct TreeNode { 3 int val; 4 ...

2018-02-03 23:07:00 15 0

转载 圆圈中最后剩下的数字

题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼...

2018-02-03 22:41:00 13 0

转载 滑动窗口的最大值

题目描述 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,...

2018-02-02 13:37:00 13 0

转载 按行打印二叉树

题目描述 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行 思路:维护两个指针:last和nlast,其中,last始终指向当前打印行的最后一个节点,nlast始终指向队列中最后一个节点 1 /* 2 struct TreeNode { 3 i...

2018-02-02 12:45:00 42 0

转载 字符流中第一个不重复的字符

题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。...

2018-02-02 12:33:00 18 0

转载 构建积乘数组

题目描述 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法 思路:不能使用除法,则根据A由上至下、由下至上连乘 1 cla...

2018-02-02 12:14:00 24 0

转载 数组中重复的数字

题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。 思路:通...

2018-02-02 10:18:00 12 0

转载 把字符串转换成整数

题目描述 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0 输入描述: 输入一个字符串,包括数字字母符号,可以为空 输出描述: 如果是合法的数值表达则返回该数字,否则返回0思路:多考虑特殊情况 1 bool i...

2018-02-02 09:54:00 8 0

转载 不用加减乘除做加法

题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 思路:利用“异或”和“与”操作模拟加法和进位操作 1 class Solution { 2 public: 3 int Add(int num1, int num2) ...

2018-02-01 15:26:00 11 0

转载 求1+2+3+...+n的非常规方法

题目描述 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 思路:   1、利用构造函数,定义静态变量 1 class Add 2 { 3 public: 4 ...

2018-02-01 14:11:00 28 0

转载 翻转单词顺序列

题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I a...

2018-02-01 12:18:00 14 0

转载 左旋转字符串

题目描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,...

2018-02-01 11:56:00 16 0

转载 和为S的两个数字

题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述: 对应每个测试案例,输出两个数,小的先输出。思路:两个指针,分别从前往后,从后往前查找,时间复杂度为O(n) 1 class ...

2018-02-01 11:48:00 20 0

提示
确定要删除当前文章?
取消 删除