[LeetCode]4Sum

原题Given an array nums of n integers and an integer target, are there elements a, b, c, and d in nums such that a + b + c + d = target? Find all unique quadruplets in the array which gives the sum of target.NoteThe solution set must not contain duplicate quadruplets.ExampleGiven array nums = [1, 0, -1, 0, -2, 2], and target = 0.A solution set is[-1, 0, 0, 1][-2, -1, 1, 2][-2, 0, 0, 2题解本题的... Read More

Codeforces Round #345 (Div. 1) C. Table Compression

原题C. Table Compressiotime limit per tes4 secondmemory limit per tes256 megabyteinpustandard inpuoutpustandard outpuLittle Petya is now fond of data compression algorithms. He has already studied gz, bz, zip algorithms and many others. Inspired by the new knowledge, Petya is now developing the new compression algorithm which he wants to name dis.Petya decided to compress tables. He is give... Read More

深度优先搜索之栈解迷宫(C++)

在之前的一篇关于搜索的文章中《广度优先搜索算法队解迷宫问题》有提到深度优先搜索(dfs)算法,其中有一种就是本篇文章提到的实现方法:利用栈解迷宫;《广度优先搜索算法队解迷宫问题》中利用栈解迷宫有一个bug,比如:在x点出发,向右走直到尽头回到x点,此时在向其他方向(比如上),那么不能再走曾经向右走过的路(坐标)。这次,我们增加一个direct_mark数组,来标记在每一个坐标上曾经走过的方向。程序范例[code lang="cpp"/** 栈解迷宫 - 深度优先搜索.* @authur genialx <admin@ihuxu.com>*#include <iostr#include <st#define LEFT #define RIGHT #define UP #define DOWN using namespace std;struct Path int x;... Read More

分治法解矩阵乘积

题目假设有A,B两个矩阵,且其均为n*n维矩阵,n为2的幂(n>=2)。求A与B的乘积。分治法解矩阵乘积通过上图我们可以看到书中的利用分治法解决的伪代码。解决思路一暴力解法时间复杂度O(n^3程序范例void solve_matrix_multiply_n3(int a[][MATRIX_LENGTH], int b[][MATRIX_LENGTH], int c[][MATRIX_LENGTH]for (int i = 0; i < MATRIX_LENGTH; i++) for (int j = 0; j < MATRIX_LENGTH; j++) for (int k = 0; k < MATRIX_LENGTH; k++) c[i][j] += a[i][k] * b[j][k];解决思路二利用分治法解决矩阵乘积程序范例void solve_matrix_mul... Read More

动态规划解决最大子数组问题

问题Find the contiguous subarray within an array (containing at least one number) which has the largest sum.For example, given the array [−2,1,−3,4,−1,2,1,−5,4]the contiguous subarray [4,−1,2,1] has the largest sum = 6.问题来自于Leetcode:Maximum Subarra解决方式利用动态规划思想来解决最大子数组问题。之前的文章有写过有关动态规划的思路。如果你对动态规划不清楚可以通过这篇文章来简单了解下,里面有相应的视频还是不错的:拆分集合为两个和相等的子集合问题(动态规划)。该方法相对于分治法策略解决最大子数组问题来解决的时间复杂度中会有很大提升。时间复杂度O(n程序范例... Read More

分治法策略解决最大子数组问题

问题描述Find the contiguous subarray within an array (containing at least one number) which has the largest sum.For example, given the array [−2,1,−3,4,−1,2,1,−5,4]the contiguous subarray [4,−1,2,1] has the largest sum = 6.问题来自于Leetcode:Maximum Subarra解决方式利用分治策略来解决最大子数组问题时间复杂度O(nlgn程序范例[code lang="cpp"#include <iostr#include <cstdusing namespace std;int find_max_crossing_subarray(int* a, int... Read More

LeetCode OJ Algorithm – Sliding Window Maximum(hard)

原题Given an array nums, there is a sliding window of size k which is moving from the very left of the array to the very right. You can only see the k numbers in the window. Each time the sliding window moves right by one position.For exampleGiven nums = [1,3,-1,-3,5,3,6,7], and k = 3.Window position Ma--------------- ----[1 3 -1] -3 5 3 6 7 1 [3 -1 -3]... Read More

自从有了她,再也不怕断签了:超级话题签到提醒

前言在解决了上一次关于超级话题积分bug后,又接到超级话题签到提醒的产品需求。这是一篇偏于技术实现的文章,讲述的比较笼统,业务围绕超级话题的签到提醒进行展开。如果,您对超级话题签到提醒的技术背景与实现感兴趣,那么这篇文章希望对你有帮助。当然,如果你是某个超级话题的超级粉丝,比如鹿晗,张艺兴,但是发现断签了。那么我非常替你感到“痛心”,因为目前超级话题没有补签功能。当然,如果你觉得是因为系统问题导致没有连续签到,那么你可以通过超级话题的官方反馈方式进行反馈来解决问题。当然,我劝你这么做之前一定要三思。因为,通过我排查的经验而言,基本山是由于你们(用户)把时间搞错了,而导致没有续签。而且,目前的签到提醒功能会在每天晚上提醒你签到的哦产品最近,在忙活超级话题的签到提醒产品的开发。首先,这是第一次比较热切的关注用户反应的产品。虽然说,对于产品的参与和认知并没有多么深入的理解,但是愈发的觉得这件事... Read More

几个想抽自己的PHP错误

每隔一段时间,总有那么几天想抽自己。不知道到底为什么,睡眠不足么还是鸭梨大?当然,我没有什么自虐症也没有什么抑郁。可是,心情如词鸭梨 鸭梨大 鸭梨大鸭梨 鸭梨 鸭梨大 鸭梨大 鸭梨大我真的鸭梨大鸭梨 鸭梨大 鸭梨大鸭梨 鸭梨 鸭梨大 鸭梨大 鸭梨大就快受不了了。。。无奈之间,只好安慰自己:“善骑者坠于马、善水者溺于水、善饮者醉于酒,善战者殁于杀”。可这样自欺欺人好么 :<真相[code lang="php"tryself::$_messages[] = array('uid' => $uid, 'text' => $content);if(count(self::$_messages) >= 5) $result = Apilib_Emessage::sendMulti(self::$_messages, self::SENDER_UID);self::$_messages[] = array();... Read More

PHP的Traits:到底是祸害还是好得飞起?

在2012年3月初,PHP团队宣布了5.4版本的发布。程序员们对这次的发布已期待许久,因为这一次的升级带来了很多特性的加入。其中,最受追捧的是Traits。为了构建这次发布的版本,Shammer C特意为此撰写了一篇文档:如何使用PHP的Traits,我强烈的建议您在读这篇文章之前拜读一下,因为这篇文章需要读者能够对Traits有一定的基础了解。Traits已经被PHP社区广泛的接受,最为关键的是因为它包含了其他Java、C++和Python编程语言的特性。除此之外,Traits也被广大的网友们神化了。那些程序员狂砍这种特性将给他们的项目带来多么大的益处,尤其指出它是能够替代面向对象(OOP)继承的特性。然而,Traits真的有那么神奇么?难道真的能对PHP开发有所促进么?还是败絮其中呢?PHP的Traits是个祸害从表面上来看,由于它可以降低整个应用中代码的复用成本而受到了非常强烈的支持... Read More

写C++就像是抱着一捆指针在浩瀚的内存中裸奔

Ja娃们,好久不见,最近和两位Java大牛喝了牛肉汤后,惊奇发现,他们都提及到了一个很有意思的话题:Java的开发效率比C++要高!小编的常识认为,C++的运行效率高,Java的开发效率高,但究竟是为什么,我觉得有必要弄个明白,我请教了几位大牛,他们这样说A大哥说了C++是面向内存编程,Java则是面向数据结构编程。C++里,内存是裸露的,可以拿到地址,随意徜徉,增了删了,没人拦你,等到跑的时候崩给你看。然而Java里,能操作的都是设计好的数据结构,array有长度,String不可变,每一个都是安全的,在内存和程序员之间,隔着JVM,像是包住了边边角角的房间,随便小孩折腾,不会受伤。Java程序员是孩子,嚷嚷要这个那个,玩完了就丢,JVM是家长,买买买,还要负责收拾。有的孩子熊点,屋子很乱,收拾起来费劲,但房子还在。C++程序员是神,操纵着江河湖海,日月星辰,但能力越大,责任越大,万... Read More

深入IDE利器VIM:tab键的配置

VIM,一款自定义程度超乎你想象的IDE利器。在平时开发中,得心应手,无所不可比及。没有你想不到,只有你做不到。。。不对,没有你做不到,只有你想不到的。然而,为了代码看起来更优雅,通常也是编程的规范,基本上在编写代码时,是不允许有tab字符存在的。所以,在VIM如何配置tab键,将tab键统一替换成空格?区别空格的ACSii码:0x2tab的ACSii码:0x0这使得在混用两种字符的时候,不同的场景下(比如:vim、浏览器)会呈现不同的长度,看起来很混乱。配置打开vim配置文件.vimr[code lang="shell"vim ~/.vimr[/code写入如下内容并保存[code lang="shell"set expandtaset tabstop=set shiftwidth=[/code这样一来,试试在vim中敲击tab键的效果,是不是已经替换成4个空格了?那之前的tab键怎么办... Read More

拆轮子 – 唯美细腻的夕阳海浪安卓手机动画

好久没有写博客了,一直在弥补基础, 今天带来的是一个博主有史以来见过最最精美的动画效果了。所以我才迫不及待的拆轮子。今天拆的部分是如下的效果。无图无真相呀前人种树,后人乘凉。很早的时候大神CJJ关于这个库的一些分析,大家可以去看看。http://www.jianshu.com/p/a4dabb3554c1 不过由于该文章中对于动画的具体实现没有提及,所以才有这篇文章的存在了=.因为本人水平不咋地,先奉上这个库的下载地址https://github.com/danielzeller/Depth-LIB-Android大家如果之前接触过类似的效果,其实也就没有必要看下去啦=.好了,废话说了这么多,如果有兴趣往下看,就继续吧一.说明因为代码已经存在,所以我认为就没有必要照着代码一点点讲,感觉这样的方式更容易把读者弄得云里雾里的,所以我这里决定从零开始一步步来实现这个效果(当然因为我是先仔... Read More

awesome-php中英文资源整理(同步更新)

中文版收集整理一些常用的PHP类库, 资源以及技巧. 以便在工作中迅速的查找所需...这个列表中的内容有来自 awesome-php 的翻译, 有来自开发者周刊以及个人的积累等.一个前端组件的列表 awesome-frontend 推荐学习资源PHP相关的有参考价值的社区,博客,网站,文章,书籍,视频等资源PHP网站(PHP WebsitesPHP The Right Way - 一个PHP实践的快速参考指导PHP Best Practices - 一个PHP最佳实践PHP Weekly News - 一个PHP 周刊Securing PHP - 有关PHP安全相关PHP FIG - PHP框架交互小组PSR 中文翻译PHP School - 一个开源的PHP学习资源PHPTrends - 一些快速发展的PHP类库检索PHP 开发者实践其他网站(Other WebsitesThe Op... Read More

编程思想:面向对象和面向过程

  何谓面向对象?何谓面向过程?对于这编程界的两大思想,一直贯穿在我们学习和工作当中。我们知道面向过程和面向对象,但要让我们讲出来个所以然,又感觉是不知从何说起,最后可能也只会说出一句就是那样啦,你知道啦。而这种茫然,其实就是对这两大编程思想的迷糊之处。本文通过学生到校报道注册的实例,阐述了面向过程和面向对象两大思想。希望能对你的学习和工作有所帮助。一、面向过程  首先我们来认识下,什么是面向过程?如果咬文嚼字的话可以这样来理解,面向过程就是面向解决问题的过程进行编程。仔细思考一下,我们在学习和工作中,当我们去实现某项功能或完成某项任务时,是不是会不自觉的按部就班的罗列出我们要做的事情?(如果没有,建议以后试着步骤化解决问题)。而当我们按着我们罗列的步骤去解决问题时,实质上就是按照面向过程的思想去解决问题。我们罗列的步骤就是过程,按照步骤解决问题就是面向过程。  传统的面向过程的编程思想总... Read More