
编程语言
文章平均质量分 52
nisxiya
Still a graduate student in ss of Peking UniversityGood at python, Java, C, Linux VimLearning Algorithms
展开
-
关于Spring.io官网Spring Session Restful example的问题
问题描述当使用SpringBoot提供Restful接口服务时,可以非常方便快速地通过SpringBoot来发布。然而需要考虑的问题:使用安全机制使用外在数据库保存session针对安全机制,官网提供了一个demo: 官网demo地址为:http://docs.spring.io/spring-session/docs/current/reference/html5/guides/rest.原创 2015-03-20 15:14:22 · 2656 阅读 · 0 评论 -
BAT技术面试最喜欢考的两个编程题
关于字符串的编程题真的是太常见了,而且是非常吸引BAT等公司IT技术面试官。这类题目一般都是不难的,核心代码都是非常简单,但是需要注意的细节是太多了,而这也正是考察了面试者的技术功底。关于字符串的考题,常见的有strncpy, strncat等等。strncpy代码来自Linux Manual手册 (在linux终端输入 man strncpy 就可以看到了) char *原创 2015-04-09 21:42:25 · 1878 阅读 · 0 评论 -
C++虚表函数解析
本文转载:http://blog.youkuaiyun.com/haoel/article/details/1948051《C++ 虚函数表解析》陈皓 http://blog.youkuaiyun.com/haoel前言C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所转载 2015-04-25 00:06:00 · 658 阅读 · 0 评论 -
2D矩阵求最大正方形子矩阵,各项元素为1
问题描述对于一个 m * n 的矩阵,每项元素为 0 或 1. 问题1求该矩阵中的最大子矩阵,子矩阵可以为长方形,但是子矩阵内的各项元素均为 1。解决1针对这个问题,可以枚举子矩阵的左右边界,复杂度为 O(n^2)。针对该边界内的m行,从上到下扫一次,每行的和,如果为左右边界之差,那么该行的每项元素都为 1 。从上往下扫各行,求得最长连续地满足要求的行数。从而可以求得子矩阵的面积。 求特定边界内每原创 2015-04-29 11:09:12 · 2146 阅读 · 0 评论 -
M * N 矩阵的骨牌覆盖问题
问题描述有一个 M * N的矩阵,现在需要使用 1 * 2 的骨牌进行覆盖,问总的覆盖方案数有多少? 题目链接:http://hihocoder.com/contest/hiho43/problem/1问题求解标记骨牌覆盖状态 1, 横向排的骨牌表示: 1 1 2, 纵向排的骨牌表示: 0 1骨牌状态转移 对于第 i 行与第 i+1 行,其中某段格子状态如下:原创 2015-05-09 11:19:31 · 2535 阅读 · 0 评论 -
博弈游戏·Nim游戏·二
题目1 : 博弈游戏·Nim游戏·二时间限制:10000ms单点时限:1000ms内存限制:256MB描述Alice和Bob这一次准备玩一个关于硬币的游戏:N枚硬币排成一列,有的正面朝上,有的背面朝上,从左到右依次编号为1..N。现在两人轮流翻硬币,每次只能将一枚正面朝上的硬币翻过来,并且可以随自己的意愿,在一枚硬币翻转后决定要不要将原创 2015-05-11 12:50:51 · 1359 阅读 · 0 评论 -
P, NP 问题
P问题:多项式时间可以解决的问题。NP问题: 多项式时间可以验证某种解法。但是是否可以多项式时间内解决某种问题,仍然得不到证明或证否。P属于NP问题,但是 P和NP 是否相等,仍然未解。NPC问题:一些比较难的NP问题,可以归约到NPC问题,即更为通用的一种解法,可以解决较多的NP问题。人们发现NPC问题,很难有多项式时间解法,因此人们逐渐相信NPC不可多项式解决,也就逐渐相信 P != NP。一些原创 2015-05-06 10:43:47 · 738 阅读 · 0 评论 -
装箱问题(NP问题)
问题描述有n个物品,体积为 v[i],i = 1..n。 现在有若干同样的箱子,体积为C,C > v[i], i = 1..n。问最少需要多少箱子,才能装下所有的物品。问题求解这类问题是NP问题,即可以在多项式时间内验证一个解是否OK,但是不可以在多项式时间内求得该解。 装箱问题,有个近似解。First Fit (FF)首次适应解法。对于物品 i ,从当前装了物品的箱子中找到首个,其剩余容量可以放原创 2015-05-06 11:30:56 · 11423 阅读 · 0 评论 -
多处理机调度问题(NP)
问题描述有 n 个独立的任务,分配给 m 个相同的处理机进行处理,每个任务所花费的时间为 t[i], i = 1..n,每个任务独立,不可分割,不可中断。问题:这些处理机要处理完这些任务,所需要花费的最短时间是多少?问题解决该问题也是NP问题,也跟上篇博客中的装箱问题类似:http://blog.youkuaiyun.com/nisxiya/article/details/45533811 装箱问题,是给定容原创 2015-05-06 11:47:56 · 9284 阅读 · 0 评论 -
加油站问题
问题描述有一个环形轨道,上有若干加油站,一辆小车(初始时油箱为空,油箱容量无线)从某个加油站出发绕一圈,路上需要耗油,已知 加油站的总油量和路上需要消耗地油量一样多,问是否可以找到从一个加油站出发,小车可以正常绕一圈?问题解析其实上面的题与下面的题目类似:有一个循环数组,{1, 2, -3, 4, -5, -8, 9},问找出一个数,使得从该数出发,往右的所有子数组,比如 {2}, {2,-3},原创 2015-05-08 10:21:52 · 1087 阅读 · 0 评论 -
有序单链表转BST树+时间复杂度要求O(n)
问题描述针对有序的数组或链表,要转为相对平衡的BST树时,通常有多种做法。 1. 对于有序的数组A,转为BST时,取数组中间元素A[m],转为根,然后递归转换A[1..m-1], A[m+1 .. n]即可。时间复杂度 T(n) = 2 * T(n/2) + O(1),得出T(n) = O(n) 2. 针对有序的链表,如果依据上述方法,也可以进行。然而要取到A[m]的话,则需要遍历n/2长度原创 2015-04-15 23:28:24 · 1607 阅读 · 0 评论 -
【c++】语言基础:++i & i++ 的底层区别
++i 和 i++的底层区别++i,是先取 i 的地址,增加它的内容 ,然后把值放到寄存器中i++,是先取 i 的地址,把它的值装入寄存器,然后增加内存中 i 的值关于 ++i 是左值,而 i++ 是右值的问题++i,返回值是 i 本身自己,是一个变量i++,返回值是 i 之前的一个数值,是一个数,不是变量因此 ++(i++) 这就是错误的,因为 i++ 返回的是右值,而不能 ++右值。原创 2015-04-20 14:52:22 · 1613 阅读 · 0 评论 -
Spring Boot 设置静态资源访问
问题描述当使用Spring Boot来架设服务系统时,有时候也需要用到前端页面,当然就不可或缺地需要访问其他一些静态资源,比如图片、css、js等文件。那么如何设置Spring Boot网站可以访问得到这些静态资源,以及静态资源如何布局?解决方案这里引用stackoverflow网站的问题截图:[http://stackoverflow.com/questions/27381781/java-spr原创 2015-04-08 10:48:09 · 35496 阅读 · 1 评论 -
Intellij idea中gradle设置多源文件目录
问题描述Intellij idea开发工具来开发Java工程的时候,通常会使用ant、maven、groovy、gradle等工具来管理项目依赖。我在工程中使用了较新的gradle作为管理工具。但是在运行build.gradle的build任务时,通常需要将多个目录设置为源代码文件目录。否则一旦build完了以后,某些目录中的源代码会被忽视,而认为不是源代码。比如说如下图所示: - 该图中w原创 2015-03-09 10:16:10 · 12456 阅读 · 0 评论 -
SpringBoot uses mysql as the database
When using mysql in the springboot project, we need to config the application.properties to enable it.first, config the application.propertiesapplication.properties# application.propertiesspring.dat原创 2015-03-10 11:26:55 · 1860 阅读 · 0 评论 -
算法:数组中只出现了一次的数字
题目一个整型数组里除了两个数字之外,其他的数字都是出现了两次。请写出程序找出这两个只出现了一次的数字。要求时间复杂度是O(n), 空间复杂度是O(1)。题解tip1:如果该数组A中只有一个数字出现了一次,其他的数字都出现了两次,那么求出该数字就很简单,其值就是 A[0] ^ A[1] ^ … ^ A[n-1] 因此就需要想办法,将问题转换为tip1里的问题场景。 tip2:将题目中的数组的每个数原创 2015-03-20 23:44:29 · 705 阅读 · 0 评论 -
Python发送POST请求的简单例子
import urllib,urllib2def doPost(self,data1,data2): data = urllib.urlencode({'data1':data1,'data2':data2}) request = urllib2.Request('http://www.xxx.com/test',data) response = urllib2.urlope转载 2015-03-11 10:34:38 · 7007 阅读 · 0 评论 -
Java:Access password protected URL
问题描述当访问要密码验证的网址的时候,通常会弹出一个对话框,指示用户输入用户名和密码,那么用Java代码去读取URL对应的内容时,如何设置好登陆凭证?解决方案 URL url = new URL("http://user:password@10.10.12.72:8080/data/retrieve?rid=109000&pid=community"); URLConn原创 2015-03-31 14:57:26 · 895 阅读 · 0 评论 -
关于Java和CPP强制类型转换
1,当基本类型由下往上转的时候,会有隐式的类型转换,比如float f = 0.1f;double d = f; // 默认向上转换不需要显示指定 double d = (double) f;2,在【java】中,然后向下转换的时候,却是需要的:float f = (float) d; // d是一个double类型f = 3.1415926f; // 在数字末尾加上 f,以表明这一个数字是fl原创 2015-03-18 08:10:12 · 897 阅读 · 0 评论 -
使用STL来模拟Treap的功能
问题描述我们知道,Treap可以完成节点的动态插入、删除、查询,其每个操作的时间复杂度是O(log n),因为其实现较红黑树更为简单,因此常常用于某些场合,以替换红黑树的实现。Treap的每个节点维护了key, priority。struct Node { int key; int priority; Node (int k, int p): key(k), priority原创 2015-04-19 16:36:31 · 1521 阅读 · 0 评论 -
基于树的动态规划
问题描述很多时候,我们所做的DP(Dynamic Programming)通常是基于很简单的数据结构,比如一维数组、二维数组、甚至更高维的数组。今天刷 hihocoder的时候,遇到了一道题,很有意思,是树上的DP。题目 1055 : 刷油漆 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 上回说到,小Ho有着一棵灰常好玩的树玩原创 2015-04-23 17:02:11 · 984 阅读 · 0 评论 -
BST树遍历O(n)时间复杂度+O(1)空间复杂度
问题描述BST树的遍历问题常常遇到,前序、中序、后序等。如果用递归的话,是非常方便的,其时间复杂度是O(n),空间复杂度是O(log n)级别。PS:stackoverflow问答网站上有一个问题指出,这类问题的复杂度不应该直接说是O(log n),因为编译器会进行一些优化,比如修改成尾递归等。不过我们这里暂时不考虑优化,从程序逻辑上来讲,BST递归遍历认为是O(log n)的复杂度。OK,那么如果原创 2015-04-14 21:08:51 · 9143 阅读 · 1 评论 -
矩阵中求子矩形
问题描述有一个 n * n的矩形,其中每个元素只可能是0 or 1。比如如下矩阵A:1 1 0 00 0 1 11 0 1 01 1 0 1其中 A[0][0], A[0][1], A[3][0], A[3][1] 这四个元素恰好是一个长方形的四个角,且每个元素都是1. 因此称这四个元素围成了一个子矩形。现在需要判断,给定的矩阵A中,判断是否存在这样四个元素,都是1,且恰好围成一个子矩形?解决原创 2015-05-29 14:45:43 · 2222 阅读 · 0 评论 -
[Lintcode] Maximum Gap Problem
问题描述在一个无序的数组中,如果对其进行排序,然后扫描一遍有序数组,可以获得相邻两元素的最大差值,比如 {-1, 2, 4, 9},那么最大差值就是4和9之间,是5. 现在如果不对原始数组进行排序,有什么好的方案,来获取有序形式下的最大差值? Given an unsorted array, find the maximum difference between the successive原创 2015-05-31 16:29:17 · 1618 阅读 · 0 评论 -
【算法】直方图中最大面积问题
问题描述给定一个直方图,求这个直方图中最大矩阵对应的面积是多少? 比如有个图如下 (对应的数组为:[2,1,5,6,2,3]) 那么对应的最大矩形的面积应该为 10: 问题分析这类题是很常见的一道题,也是面试当中很容易考到的一题。解决方法倒是挺多。常见的比如Divide-and-conqure等方法,复杂度也都是O(n log n)。 现在有没有一种更快的方法呢?复杂度可以达到 O(n)问题原创 2015-06-19 16:26:14 · 5545 阅读 · 0 评论 -
MongoDB Cluster Setting up [replSet + Sharding]
step 1 [on each server]sudo mkdir -p /data/mongodbwsdc/mongos/logsudo mkdir -p /data/mongodbwsdc/config/datasudo mkdir -p /data/mongodbwsdc/config/logsudo mkdir -p /data/mongodbwsdc/mongos/logsudo原创 2015-12-16 18:15:41 · 821 阅读 · 0 评论 -
Java ObjectMapper String转HashMap
Just to remindHashMap<String, Object> rDefHashMap = om.readValue(rDefStr, new TypeReference<HashMap<String, Object>>() {});原创 2016-01-19 14:39:07 · 5786 阅读 · 0 评论 -
Vim 多行替换
Replace multiple lines in VimAim// to replace the following line with new multiple lines// original line "type": "string"// target lines "type": "string", "fie原创 2016-09-05 11:20:21 · 1762 阅读 · 0 评论 -
C++ STL lower_bound & upper_bound
background首先,lower_bound和upper_bound是C++ STL中提供的非常实用的函数。其操作对象可以是vector、set以及map。lower_bound返回值一般是>= 给定val的最小指针(iterator)。upper_bound返回值则是 > 给定val的最小指针(iterator)。vector中的lower_bound & upper_bound// lowe原创 2015-04-08 19:47:53 · 10861 阅读 · 0 评论 -
[Kibana > Timelion] Divide multi-valued seriesList by another multi-valued seriesList
Kibana Timelion Plugin EnhancementWhy need to divide multiple valued seriesList?Timelion is quite a great plugin for computing two series in kibana. The divide computing supports divisor as a number or原创 2017-01-26 18:24:09 · 1802 阅读 · 0 评论 -
C++ priority_queue 最大堆、最小堆
问题描述通常在刷题的时候,会遇到最大堆、最小堆的问题,这个时候如果自己去实现一个也是OK的,但是通常时间不太够,那么如何处理?这时,就可以借助C++ STL的priority_queue。具体分析需要注意的是,C++ STL默认的priority_queue是将优先级最大的放在队列最前面,也即是最大堆。那么如何实现最小堆呢?假设有如下一个struct:struct Node { int原创 2015-05-14 20:35:16 · 31310 阅读 · 1 评论 -
[Elasticsearch] setup Elasticsearch in intellij idea
IntroductionElasticsearch is quite a cool project. This post introduces how to setup Elasticsearch in IntelliJ Idea locally. After this, we are able to :read Elasticsearch source code within an IDEde原创 2018-01-19 19:55:24 · 3076 阅读 · 0 评论 -
Timezone in Python
Just as a markIf we want to set PST timezone for a given datetime, it should be usually UTC-8. But sometimes it could return UTC-7:53. How should we resolve? Use localize instead of replace timezone...原创 2018-12-07 21:33:29 · 450 阅读 · 0 评论 -
Best time to buy and sell stocks IV
题目https://leetcode.com/problems/best-time-to-buy-and-sell-stock-iv/ Say you have an array for which the ith element is the price of a given stock on day i. Design an algorithm to find the maximum原创 2015-07-24 08:37:26 · 627 阅读 · 0 评论 -
对给定数组按奇偶性划分,不改变相对顺序
问题描述给定一个数组,比如 arr = { 1, 3, 1, 4, 1, 5, 2, 0},对该数组进行整理,使得所有奇数都在前面,所有的偶数都在后面,且保证所有奇数的相对顺序不改变,所有偶数的相对顺序不改变。问题解决Solution1:T(n) = O(n^2), S(n) = O(1)利用冒泡排序的思想,对数组进行整理即可。 思想:扫描数组,针对每个发现的奇数,都利用冒泡技术,往前移动该奇数,原创 2015-08-14 20:44:45 · 2241 阅读 · 0 评论 -
[微软苏州校招 Hihocoder] Disk Storage
#1100 : Disk Storage时间限制:10000ms单点时限:1000ms内存限制:256MB描述Little Hi and Little Ho have a disk storage. The storage's shape is a truncated cone of height H. R+H is radius o原创 2015-08-12 15:45:32 · 1771 阅读 · 0 评论 -
中序遍历二叉树+O(1)空间
问题描述中序遍历二叉树时,很简单,需要加上递归就可以优雅地实现了。当然,使用递归的话,函数调用栈的空间就会达到O(log n)。那么有什么方式,可以使得中序遍历二叉树的复杂度为O(1)呢?问题分析既然要保证O(1)复杂度,那么就不能使用递归调用了。目标方案应该是使用while或for循环的方式。下面借用一张图来解释(来源:http://www.2cto.com/kf/201402/277873.ht原创 2015-06-22 10:45:02 · 1780 阅读 · 0 评论 -
[Lintcode] Best Time to Buy and Sell Stock IV
问题描述Say you have an array for which the ith element is the price of a given stock on day i. Design an algorithm to find the maximum profit. You may complete at most k transactions.Example Given price原创 2015-05-23 11:00:10 · 1019 阅读 · 0 评论 -
[概率]m个球扔到n个盒子
问题描述有m个球,要扔到n个盒子里。其中每个球都是互相独立地扔。问最后平均有几个盒子是有球的?问题解析这类问题是较为纯粹的数学问题,当然也可以用计算机精确地求出答案。方案一:编程解决p(m, i):表示前 m 个球,扔到 n 个盒子里,共占用了 i 个盒子的概率 于是 p(m, i) = p(m-1, i) * (i/n) + p(m-1, i-1) * (n-i+1)/n p(m, i) =原创 2015-06-07 08:25:16 · 4425 阅读 · 0 评论 -
n*m 矩阵: set matrix zeroes
问题描述有个 N * M 的矩阵,其中有的元素是 0,如果是 0,那么将该行和该列都设置为0. 需要 O(1) 的空间复杂度问题分析初看此问题,确实很简单,没有过多算法内容。 如果有 O( M + N) 的空间,那么可以存储所有的含有 0 的列和行。然后再逐一设置 0 即可。 现在要求是使用 O(1) 的空间复杂度,该如何处理?问题求解扫描 (Row >= 1 && Column >= 1)原创 2015-06-11 17:01:10 · 889 阅读 · 0 评论