- 博客(221)
- 资源 (1)
- 收藏
- 关注
原创 【Leetcode】之Unique Binary Search Trees
一.问题描述Given n, how many structurally unique BST's (binary search trees) that store values 1...n?For example,Given n = 3, there are a total of 5 unique BST's. 1 3 3 2
2016-07-28 23:04:06
281
转载 【Leetcode】之二叉树的非递归遍历
二叉树的非递归遍历 二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现。在三种遍历中,前序和中序遍历的非递归算法都很容易实现,非递归后序遍历实现起来相对
2016-07-28 22:09:36
301
原创 【Leetcode】之Reverse Linked List II
一.问题描述Reverse a linked list from position m to n. Do it in-place and in one-pass.For example:Given 1->2->3->4->5->NULL, m = 2 and n = 4,return 1->4->3->2->5->NULL.二.我的解题思路现在看来,链表的题
2016-07-27 22:56:54
281
原创 【Leetcode】之Subset II
一.问题描述Given a collection of integers that might contain duplicates, nums, return all possible subsets.Note: The solution set must not contain duplicate subsets.For example,If nums = [1
2016-07-23 23:55:10
308
原创 【Leetcode】之Gray Code
一.问题描述The gray code is a binary numeral system where two successive values differ in only one bit.Given a non-negative integer n representing the total number of bits in the code, print the
2016-07-21 23:05:39
365
转载 poython正则表达式
1. 正则表达式基础1.1. 简单介绍正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大。得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同;但不用担心,不被支持的语法通常是不常用的部分。如果已经在其他语
2016-07-21 17:32:11
1026
原创 【Leetcode】之Merge Sorted Array
一.问题描述Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.Note:You may assume that nums1 has enough space (size that is greater or equal to m + n) t
2016-07-20 23:30:08
259
转载 C++智能指针之auto_ptr
智能指针实际上是一个类(class),里面封装了一个指针.它的用处是啥呢?指针与内存说到指针自然涉及到内存.我们如果是在堆栈(stack)中分配了内存,用完后由系统去负责释放.如果是自定义类型,就会自动的去调用你的析构函数.但如果是在堆(heap)中分配了内存,也就是用malloc或者new.那只能自动手动的使用free或delete去释放.所以使用heap时处理的不好很容
2016-07-20 18:54:09
242
原创 【Leetcode】之Remove Duplicates from Sorted List
一.问题描述Given a sorted linked list, delete all duplicates such that each element appear only once.For example,Given 1->1->2, return 1->2.Given 1->1->2->3->3, return 1->2->3.二.我的解题思路本题跟
2016-07-19 22:40:48
264
转载 python中常见的if __name__ == '__main__':
当你打开一个.py文件时,经常会在代码的最下面看到if __name__ == '__main__':,现在就来介 绍一下它的作用. 模块是对象,并且所有的模块都有一个内置属性 __name__。一个模块的 __name__ 的值取决于您如何应用模块。如果 import 一个模块,那么模块__name__ 的值通常为模块文件名,不带路径或者文件扩展名。但是您也可以像一个标准的
2016-07-19 10:07:27
316
原创 【Leetcode】之Remove Duplicates from Sorted List II
一.问题描述Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.For example,Given 1->2->3->3->4->4->5, return 1->2->5.
2016-07-18 23:42:12
234
转载 C++的重写,重载与充定义
阅读《Effective C++》条款33的时候产生了疑惑,在重写与重定义上有所混淆。现将网上查阅的资料记录如下:重写(override)首先,重写是指派生类的方法覆盖基类的方法,要求方法名、方法的参数都相同。重写是C++中实现多态这个特性基础。重写又称为覆盖,是指派生类函数覆盖基类函数,与重定义不同,重写要求被重写的基类函数为虚函数。 例如下面的代码:class Ba
2016-07-11 21:13:31
1173
转载 Vim入门
vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的。下面的文章翻译自《Learn Vim Progressively》,我觉得这是给新手最好的VIM的升级教程了,没有列举所有的命令,只是列举了那些最有用的命令。非常不错。——————————正文开始——————————你想以最快的速度学习人类
2016-07-11 19:52:36
373
转载 epoll使用详解(精髓)
epoll - I/O event notification facility在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且
2016-07-10 19:11:22
304
转载 C++各种继承方式的可见性
公有继承(public)、私有继承(private)、保护继承(protected)是常用的三种继承方式。1. 公有继承(public)公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的,不能被这个派生类的子类所访问。2. 私有继承(private)私有继承的特点是基类的公有成员和保护成员都作为派生
2016-07-10 17:05:35
1479
转载 C++的类型转换
首先回顾一下C++类型转换:C++类型转换分为:隐式类型转换和显式类型转换第1部分. 隐式类型转换又称为“标准转换”,包括以下几种情况:1) 算术转换(Arithmetic conversion) : 在混合类型的算术表达式中, 最宽的数据类型成为目标转换类型。 int ival = 3;double dval = 3.14159;iva
2016-07-10 16:07:03
608
转载 HTTP协议解析
HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。HTTP协议的主要特点可概括如下:1.支持客户/服务器模
2016-07-10 09:41:02
350
转载 C++中的friend class
对于一个没有定义public访问权限的类,能够让其他的类操作它的私有成员往往是有用的。例如你写了一段binary tree的代码,Node是节点类,如果能够让连接多个节点的函数不需要调用public方法就能够访问到Node的私有成员的话,一定是很方便的。Friend Classes(友元类)C++中的friend关键字其实做这样的事情:在一个类中指明其他的类(或者)函数能够直接访问该类
2016-07-06 14:15:52
7451
转载 C++中explicit关键字的使用
explicit用来防止由构造函数定义的隐式转换。 要明白它的作用,首先要了解隐式转换:可以用单个实参来调用的构造函数定义了从形参类型到该类类型的一个隐式转换。例如: class things{ public: things(const std::string&name =""): m_name(name),
2016-07-02 17:12:28
1012
转载 深入浅出RPC(二)
《深入篇》我们主要围绕 RPC 的功能目标和实现考量去展开,一个基本的 RPC 框架应该提供什么功能,满足什么要求以及如何去实现它?RPC 功能目标RPC 的主要功能目标是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性。为实现该目标,RPC 框架需提供一种透明调用机制让使用者不必显式的区分本地调用和远程调用,在前文《浅出篇》中给出了一种
2016-07-02 14:24:13
529
转载 深入浅出rpc(1)
近几年的项目中,服务化和微服务化渐渐成为中大型分布式系统架构的主流方式,而 RPC 在其中扮演着关键的作用。在平时的日常开发中我们都在隐式或显式的使用 RPC,一些刚入行的程序员会感觉 RPC 比较神秘,而一些有多年使用 RPC 经验的程序员虽然使用经验丰富,但有些对其原理也不甚了了。缺乏对原理层面的理解,往往也会造成开发中的一些误用。本文分上下两篇《浅出篇》和《深入篇》,其目标就是想尝试
2016-07-02 14:22:36
298
原创 【Leetcode】之Remove Duplicates from Sorted Array II
一.问题描述Follow up for "Remove Duplicates":What if duplicates are allowed at most twice?For example,Given sorted array nums = [1,1,1,2,2,3],Your function should return length = 5, with
2016-06-21 11:53:32
252
原创 【muduo网络库学习】之基本的TCP Server工作机制
在《linux多线程服务端编程》的8.5节讲述了基于eventloop,channel,acceptor等底层的类构建TCP server的过程,以及TcpConnection的初步实现。这块的程序被各式各样的回调函数所充斥着,可读性不是太好。现在把相关程序的流程记录一下,方便以后的学习。首先还是看应用程序(使用tcpserver类的程序):#include "TcpServer.h"#
2016-06-20 14:56:26
731
原创 【Leetcode】之Subsets
一.问题描述Given a set of distinct integers, nums, return all possible subsets.Note: The solution set must not contain duplicate subsets.For example,If nums = [1,2,3], a solution is:[
2016-06-20 10:37:43
352
转载 linux的进程调度原理
Linux进程调度的目标 1.高效性:高效意味着在相同的时间下要完成更多的任务。调度程序会被频繁的执行,所以调度程序要尽可能的高效; 2.加强交互性能:在系统相当的负载下,也要保证系统的响应时间; 3.保证公平和避免饥渴; 4.SMP调度:调度程序必须支持多处理系统; 5.软实时调度:系统必须有效的调用实时进程,但不保证一定满足
2016-06-19 19:37:46
313
原创 【muduo网络库学习】之Acceptor类分析
《Linux多线程服务端编程》一书的8.4节介绍了Acceptor类的实现,下面是对这个类的分析。首先从client端入手看看怎么来使用这个类,client的程序如下:#include "Acceptor.h"#include "EventLoop.h"#include "InetAddress.h"#include "SocketsOps.h"#include void ne
2016-06-16 15:47:06
733
转载 C++中的RAII用法
C++中的RAII全称是“Resource acquisition is initialization”,直译为“资源获取就是初始化”。但是这翻译并没有显示出这个惯用法的真正内涵。RAII的好处在于它提供了一种资源自动管理的方式,当产生异常、回滚等现象时,RAII可以正确地释放掉资源。举个常见的例子:[cpp] view plain copy
2016-06-16 14:55:38
1184
原创 【Leetcode】之Combinations
一.问题描述Given two integers n and k, return all possible combinations of k numbers out of 1 ... n.For example,If n = 4 and k = 2, a solution is:[ [2,4], [3,4], [2,3], [1,2], [1,3]
2016-06-16 11:38:08
273
原创 【Leetcode】之Sort Colors
一.问题描述Given an array with n objects colored red, white or blue, sort them so that objects of the same color are adjacent, with the colors in the order red, white and blue.Here, we will use t
2016-06-16 11:23:50
242
原创 【muduo库学习】实现最简单的reactor模式
《linux多线程服务端编程 使用muduo c++网络库》的第8章是从0开始讲述一个网络库的实现,比较适合初学者入门。 在本书的第8章中是实现了以下几个类:eventloop类,poller类,channel类首先分析channel类的定义:#ifndef MUDUO_NET_CHANNEL_H#define MUDUO_NET_CHANNEL_H#include #incl
2016-06-15 16:20:40
780
原创 【Leetcode】之Search a 2D Matrix
一.问题描述Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:Integers in each row are sorted from left to right.The first int
2016-06-15 10:56:37
275
转载 C++中的const
C++ const 允许指定一个语义约束,编译器会强制实施这个约束,允许程序员告诉编译器某值是保持不变的。如果在编程中确实有某个值保持不变,就应该明确使用const,这样可以获得编译器的帮助。1.const 修饰成员变量 1 #include 2 using namespace std; 3 int main(){ 4 int a1=3; ///non-co
2016-06-15 10:32:16
235
转载 C++中的new与delete
最近一直在啃 C++ Primer 中文版第4版,发现 C++中new和delete应用遍布全书,现对其使用作简单总结。在C++中,可以使用new和delete动态创建和释放数组或者单个对象,现在对它们的使用一一道来。1.创建动态数组 数组类型的变量有三个重要的限制:数组长度固定不变,在编译时必须知道它的长度,数组只在定义它的块语句中存在。对C++中关
2016-06-14 11:04:28
416
原创 【Leetcode】之Set Matrix Zeroes
一.问题描述Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place.二.我的解题思路对于这道题,我的思路是用空间换时间。首先创建两个数组,int row_idx[row_num]={0}; int line_idx[line_num]={0],然后遍
2016-06-14 10:48:24
267
转载 C++继承
简单地说下C++类的3种继承方式,分别是public继承,protected继承,private继承。最常用的还是public继承。class默认的是private继承,它的member如果没写权限也是默认private。struct则相反,默认的是public继承。结合下面的图示和代码,对C++的继承就有了比较清晰的认识了。继承之后,derived cla
2016-06-14 10:17:38
303
转载 C++类与内存分配
一个类,有成员变量:静态与非静态之分;而成员函数有三种:静态的、非静态的、虚的。那么这些个东西在内存中到底是如何分配的呢?以一个例子来说明:12345678910111213141516171819
2016-06-13 17:28:31
485
原创 STL中的list
最近在细看《STL源码剖析》,看到list的源码的时候,一开始是有疑问的。list的迭代器设计是满足traits编程技法的,list的迭代器具体实现如下:templatestruct __list_iterator { typedef __list_iterator iterator; typedef __list_iterator const_itera
2016-06-03 11:11:22
399
原创 muduo网络库使用
之前粗略看过一段时间的nginx源码,对基于C实现的web server有了初步的理解。现在结合muduo网络库来学习下C++的web server。一.环境搭建首先是muduo网络库的安装和环境搭建:可参见http://blog.csdn.net/Solstice/article/details/5848547二.echo程序的编译运行muduo网络库是给出了很多的例子,我首
2016-06-02 15:15:40
3266
转载 TCP管理的4种定时器
TCP共使用以下四种计时器,即重传计时器、坚持计时器、保活计时器和时间等待计时器。这几个计时器的主要特点如下: 1、重传计时器 当TCP发送报文段时,就创建该特定报文段的重传计时器。可能发生两种情况: (1)、若在计时器截止时间到(通常是60秒)之前收到了对此特定报文段的确认,则撤销此计时器。 (2)、若在收到了对此特定报文段的确认之前计时器截止期到,则重传
2016-06-01 20:07:18
612
原创 【Leetcode】之Climbing Stairs
一.问题描述You are climbing a stair case. It takes n steps to reach to the top.Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?二.我的解题思路这道题也很简单,
2016-06-01 11:35:48
368
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅