
reference
文章平均质量分 80
如沐春风心旷神怡
成功等于坚定的信念加上不间断的努力
展开
-
漫谈递归:递归的思想
为什么要用递归 编程里面估计最让人摸不着头脑的基本算法就是递归了。很多时候我们看明白一个复杂的递归都有点费时间,尤其对模型所描述的问题概念不清的时候,想要自己设计一个递归那么就更是有难度了。 很多不理解递归的人(今天在csdn里面看到一个初学者的留言),总认为递归完全没必要,用循环就可以实现,其实这是一种很肤浅的理解。因为递归之所以在程序中能风靡并不是因为他的循环,大家都知道递归分两步转载 2014-10-23 21:43:47 · 1944 阅读 · 2 评论 -
Linux的网络编程面试题汇总
1:tcp和udp的区别 2:流量控制和拥塞控制的实现机制 3:滑动窗口的实现机制 4:多线程如何同步。 5:进程间通讯的方式有哪些,各有什么优缺点 6:tcp连接建立的时候3次握手的具体过程,以及其中的每一步是为什么 7:tcp断开连接的具体过程,其中每一步是为什么那么做 8:tcp建立连接和断开连接的各种过程中的状态转换细节 9:epool与select的区别 10:epoo转载 2015-03-18 11:20:49 · 28433 阅读 · 0 评论 -
leetcode总结无止境系列之链表
链表是面试中十分容易考到的题目,一般代码比较短,而且考查面试者的思维全面性和写无bug代码的能力。在写链表的题目时,建议画出示意图,并把头结点、尾节点这些特殊的结点考虑在内。 主要的技巧就是要用dummy head,就是在链表头加一个节点指向head,这样可以避免判断头指针,统一处理所有情况,最后返回dummy->next;另外有一个跟dummy head等价的方法是用指针的指针**p去处理转载 2014-09-03 17:01:46 · 3526 阅读 · 0 评论 -
KMP算法详解
相信很多人(包括自己)初识KMP算法的时候始终是丈二和尚摸不着头脑,要么完全不知所云,要么看不懂书上的解释,要么自己觉得好像心里了解KMP算法的意思,却说不出个究竟,所谓知其然不知其所以然是也。 经过七八个小时地仔细研究,终于感觉自己能说出其所以然了,又觉得数据结构书上写得过于简洁,不易于初学者接受,于是决定把自己的理解拿出来与大家分享,希望能抛砖引玉,这便是Bill写这篇文章想要转载 2014-09-24 14:05:30 · 451 阅读 · 0 评论 -
单链表的基本操作
//////////////////////////////////////////// //单链表的初始化,建立,插入,查找,删除。// //Author:Wang Yong // //Date: 2010.8.19 // //////////////////////////////////////////// #include #include ty转载 2014-09-04 13:58:31 · 523 阅读 · 0 评论 -
时间复杂度为O(1)的删除链表结点方法
给定链表的头指针和一个结点指针,在O(1)时间删除该结点。链表结点的定义如下:转载 2014-09-05 17:10:49 · 1296 阅读 · 0 评论 -
白话经典算法系列之五 归并排序的实现
归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 首先考虑下如何将将二个有序数列合并。这个非常简单,只要从比较二个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数。然后再进行比较,如果有数列为空,那直接将另一个数列的数据依次取出即可。转载 2014-09-15 17:01:21 · 361 阅读 · 0 评论 -
白话经典算法系列之六 快速排序 快速搞定
快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。 总的说来,要直接默写出快速排序还是有一定难度的,因为本人就自己的理解对快速排序作了下白话解释,希望对大家理解有帮助,达到快速转载 2014-09-17 13:06:14 · 469 阅读 · 0 评论 -
检测单链表中是否有环--快慢指针法
问题描述:在单向链表中,每个结点都包含一个指向下一个结点的指针,最后一个结点的这个指针被设置为空。但如果把最后一个结点的指针指向链表中存在的某个结点,就会形成一个环,在顺序遍历链表的时候,程序就会陷入死循环。 我们的问题就是,如何检测一个链表中是否有环,如果检测到环,如何确定环的入口点(即求出环长,环前面的链长)。 一种比较耗空间的做法是,从头开始遍历链表,把每次访问到的结点(或其地址)存转载 2014-09-03 10:35:38 · 554 阅读 · 0 评论 -
链表的逆序,排序等
#include #include typedef struct node { int data; node* pNext; }Node; //链表的操作,以有头节点为例,无头节点类似 Node* head = NULL; //创建链表,头结点data=0,pNext=NULL; bool createNodeList() { head = (Node*) malloc(sizeof(转载 2014-09-08 20:32:51 · 480 阅读 · 0 评论 -
通过金矿模型介绍动态规划
对于动态规划,每个刚接触的人都需要一段时间来理解,特别是第一次接触的时候总是想不通为什么这种方法可行,这篇文章就是为了帮助大家理解动态规划,并通过讲解基本的01背包问题来引导读者如何去思考动态规划。本文力求通俗易懂,无异性,不让读者感到迷惑,引导读者去思考,所以如果你在阅读中发现有不通顺的地方,让你产生错误理解的地方,让你难得读懂的地方,请跟贴指出,谢谢! ----第一节转载 2014-09-26 11:03:45 · 721 阅读 · 0 评论 -
最近公共祖先 (Lowest common ancestor)
问题: 给定一个二叉树,找到两个节点NA, NB的最近公共祖先(LCA)。 比如对于下图,4 和 7 的 LCA 是6, 1和13的LCA 是 8。 分析: 我们这里先考虑一般的二叉树(BT),然后再考虑这个二叉树是二叉搜索树(BST)的情况。 查找两个node的最早的公共祖先,分三种情况: 1. 如果两个node在root的两边,那么最早的转载 2014-10-25 10:04:02 · 592 阅读 · 0 评论 -
网络编程的面试题
1:tcp和udp的区别 TCP:是面向连接的流传输控制协议,具有高可靠性,确保传输数据的正确性,有验证重发机制,因此不会出现丢失或乱序。 UDP:是无连接的数据报服务,不对数据报进行检查与修改,无须等待对方的应答,会出现分组丢失、重复、乱序,但具有较好的实时性,UDP段结构比TCP的段结构简单,因此网络开销也小。 2:流量控制和拥塞控制 拥塞控制 网络拥塞现象是转载 2015-03-17 17:26:36 · 8924 阅读 · 0 评论