公众号【5分钟学网络】和【5分钟学Go】的作者,力求用最简洁的语言讲懂最复杂的逻辑!欢迎你的关注!
要求:通过二叉树的前序和中序遍历序列构建一颗二叉树 代码如下: 1 struct TreeNode { 2 int val; 3 TreeNode *left; 4 TreeNode *right; 5 Tr...
要求:求二叉树的深度(二叉树的深度为最远叶子节点到根节点的距离,即根节点到最远叶子节点的距离) Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the ...
本题也属于层次遍历的变形,不同之处在于其遍历的方法是交替进行的,形成一个ZigZag的曲线形式,如下: 代码如下: 1 struct TreeNode { 2 int val; 3 TreeNode* left; 4 ...
本题和上题一样同属于层次遍历,不同的是本题从底层往上遍历,如下: 代码如下: 1 struct TreeNode { 2 int val; 3 TreeNode* left; 4 TreeNode* right;...
题目:Binay Tree Level Order Traversal Given a binary tree, return the level order traversal of its nodes' values.
题目:Binary Tree Inorder Traversal 二叉树的中序遍历,和前序、中序一样的处理方式,代码见下: 1 struct TreeNode { 2 int val; 3 TreeNode* left; 4 ...
题目:Binary Tree Preorder Traversal 二叉树的前序遍历,同样使用栈来解,代码如下: 1 struct TreeNode { 2 int val; 3 TreeNode* left; 4 TreeN...
题目:Binary Tree Postorder Traversal 二叉树的后序遍历,题目要求是采用非递归的方式,这个在上数据结构的课时已经很清楚了,二叉树的非递归遍历不管采用何种方式,都需要用到栈结构作为中转,代码很简单,见下: 1 struct TreeNode { 2 ...
给定链表的头指针和一个结点指针,在O(1)时间删除该结点。链表结点的定义如下: struct ListNode { int m_nKey; ListNode* m_pNext; }; 函数的声明如下: void DeleteNode(ListNode* pListHead, ListNode* pToBeDeleted); 这是一道广为流传的Google面试题,考察我们对链表的操作和时间复杂度的了解,咋一看这道题还想不出什么较好的解法,但人家把题出在这,肯定是有解法的。
题目:Sort List Sort a linked list in O(n log n) time using constant space complexity 看题目有两个要求:1)时间复杂度为O(nlogn);2)空间复杂度为常数,即不能增设额外的空间。
题目:Merge Two Sorted Lists Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
题目:Maximum Product Subarray Find the contiguous subarray within an array (containing at least one number) which has the largest product.
题目:Max Points on a line Given n points on a 2D plane, find the maximum number of points that lie on the same straight line. 这道题需要稍微转变一下思路,用斜率来实现,试想找在同一条直线上的点,怎么判断在一条直线上,唯一的方式也只有斜率可以完成,我开始没想到,后来看网友的思路才想到的,下面是简单的实现:其中有一点小技巧,利用map来存储具有相同斜率值的的点的数量,简洁高效。
题目: Evaluate Reverse Polish Notation Evaluatethe value of an arithmetic expression in Reverse Polish Notation.
题目:Reverse Words in a String Given an input string, reverse the string word by word. For example, Given s = "the sky is blue", return "blue is sky the". 比较基础的一个题,拿到这个题,我的第一想法是利用vector来存每一个子串,然后在输出,这是一个比较简单的思路,此外,还有第二个思路,就是对所有的字符反转,然后在针对每一个子串反转,但是这个时候要注意它的要求,保证每个子串中只有一个空格。
好久没更新博客了,感觉在博客园这种技术为主的博客里面写太多东西写得太杂了,平时的阅读体验非常糟糕,我一直都是一个喜欢记录的人,以前经常有在笔记本上写日记的习惯,但是自从用了网上博客之后,好像就再也没有在纸上写过,但是我觉得这种好习惯不应该让它丢弃,但是有些东西是只愿与自己说的,不想在一个大众都非常熟悉的平台上写作,以前的想法是在新浪上写生活,在博客园上写学习和技术,但这样真的是有些乱。
Reference: [1] Mobile Data Offload for 3G Networks [2] Mobile Data Offloading through Opportunistic Communications and Social Participation [3] Fem...
本文只供入门操作,记于此以防自己忘记,或帮助走过路过的你解决一时之需,即便是只能帮助到一个人,我的辛苦也就没有白费。 用EndNote向Word中直接插入参考文献能极大的提高论文写作的速度。在此以EndNote X7和Word 2010进行说明。
平时在做ppt进行工作汇报的时候,有时候需要对截取的图形进行标注,方便讲述,这样的操作用QQ截图是可以做到的,但QQ功能有限,只能简单的画圈,画框和画箭头。在此,记录一款有多种功能的截图标记软件—GreenShot,这款软件免费,小巧,而且功能众多,非常适合使用。
做人和做学问都是一样,似乎一味的好高骛远,只会让自己摔得更惨,记得李开复说过一句话,记不太清楚原话了,但大体意思是这样的:一个人如果投机取巧,耍小聪明,获得一些成就,因为虚荣心得到满足而获得极大的快感,但最终肯定会为这种成就买单,付出巨大的代价,还是得踏踏实实,认认真真做好每一件小事。
关于Mobile Data Offloading这个研究领域的Paper基本上该有的都看过了,我想即使再有也无非是那些套路,新不到哪去。同样,这篇paper也是这样,它的出发点是改进原有的利用ad hoc网络来进行offloading中耗能和延迟高的缺陷。
这篇是师兄的一篇杰作,特意转过来,因为以后也要用到,到时候就没必要自己去写了。实为偷懒,但也是为了能够更快的解决问题。原文: http://hi.baidu.com/davy_hwang/item/6c14bfd0a736823149e1dd57 1 #pragma once ...
There is a interesting function which can play a System sound. First let's see the WinAPI. //声明: MessageBeep( uType: UINT {参数是个常数; 根据不同的常数发出不同...
BonnMotion是一款基于java的移动场景产生和分析工具,常用来研究mobile ad hoc network的特征。其产生的移动场景可以导入到几款网络模拟器中进行模拟分析,例如:NS2,NS3,ONE,GloMoSim/QualNet,COOJA,MiXiM等等,它支持的也是比较常用的几种移...
这是一篇英文文摘,由一个CSDN的名博翻译过来,看过之后特兴奋,特意转载过来保存,以防消失,原文详见:http://blog.csdn.net/smarttony/article/details/16331145 在互联网世界当中,博客网站的种类是多种多样的。
CSV(Comma-Separated Values)为逗号分隔值文件,其文件以纯文本形式存储表格数据(数字和文本),纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。数据的字段由逗号分开,程序通过读取文件重新创建正确的字段,方法是每次遇到逗号时开始一段新的数据。
知识学而不用,就等于没用,到真正用到的时候还得重新再学。最近在看几款开源模拟器的源码,里面涉及到了很多关于Properties类的引用,由于Java已经好久没用了,而这些模拟器大多用Java来写,外加一些脚本语言Python,Perl之类的,不得已,又得重新拾起。
今天在看一个模拟器的源码,一个包里有多个类,一个类里又有多个属性和方法,如果按顺序看下来,不仅不能对整个模拟器的框架形成一个大致的认识,而且只会越看越混乱,所以,想到有没有什么工具可以将这些个类以及它们之间的依赖关系转化成UML图,这样一看图就能一目了然。
懒得写过多的文字,千言万语,尽在一条链接: http://1325100.blog.51cto.com/1315100/1331172
ONE主要的功能是节点的移动,节点间的相遇情况,路由情况以及消息的处理机制。下面简要介绍下目前ONE自带的六种移动模型和六种路由模型。 Mobility Model: 从大的方面,可以分为三种,1)随机移动;2)基于Map的随机移动;3)基于用户行为的移动 进一步细分: 1)包括两种:Ran...
之前看过一本100多页的《python简明教程》,都是些非常简单的语法,现在到真正用的时候根本无从下手,所以,重新捧起一本《python学习手册》,1000多页,希望每天看一些,坚持10天内把重要的部分看完并做实践,每天坚持写点学习笔记来监督自己往前走。
这久看论文总是看到WiMax,802.11a, 802.11b, 802.11g等技术标准,在很大程度上都泛泛地将它们当做同一种概念来对待,即用于无线通信的技术标准,没有继续去深究它们之间的关系。今天看到一个网友总结挺好的,简洁又不失准确,特意转载过来做记录。
今天看文献看到一个有趣的算法—Rolling Hash,这个算法可以更新在不同的machine上的两个“similar”的文件,也叫做rsync algorithm,rsync顾名思义:remote sync,远程镜像同步备份,现在在类Unix的系统已经有该种工具,在此我们只说它涉及的核心算法—Rolling Hash。
前面下载安装的环节我就不多说了,网上已经有很多的例子,最全的是一个新浪网友写的博客:http://blog.sina.com.cn/s/blog_785a23ae0100xraq.html。他使用的是Ubuntu 11.10,不过过程都一样,按照他所说的在13.10下装会遇到一点小问题,很容易就解决了,我现在要说的是另外一个问题,这个问题致使我在安装完之后,花了不少的时间在检查一下低级问题上,比如说是否是配置文件需严格控制格式,一个空格或enter都不允许,或者是版本不同,所要求的配置文件的内容也会不同,这些问题现在看来都是一些低级问题,这让我花了一些不必要的检查时间。
在空间上看见同学转的一篇关于学术研究的文章,由于不常常上空间,更别说在上面看一些好的文章,所以特意将那篇文章整理到自己的博客中,方便以后做科研的时候能够用到,原文出处:http://user.qzone.qq.com/9320597/blog/1380214863#!app=2&via=QZ.HashRefresh&pos=1380214863 1. 请教怎样反读出 origin 曲线上全部数据点? 如,我用 10个数据点画出了一条 origin 曲线,并存为 project的.OPJ 格式。
继上一篇,本篇同样出自zoomzum.com,具体可见http://zoomzum.com/6-free-c-graphics-and-game-libraries/,介绍了6个免费的C++图形和游戏库,同样出自zoomzum.com。
C++标准中并没有包含GUI,这也使得C++开发图形化界面需要依赖于第三方的库。实际上,图形界面恰恰是C++的强项,小到平常使用的各类桌面软件,大到魔兽世界这样的游戏,都是C++擅长的地方。C++之所以能做到这一点,原因在于它是一门即能提供极高的性能,又能提供良好接口的语言。
复制控制这一节需要注意的地方不多,主要有以下几点: 1、定义自己的复制构造函数 什么时候需要定义自己的复制构造函数,而不用系统提供的,主要遵循以下的经验说明: 某些类必须对复制对象时发生的事情加以控制,这样的类(1)经常有一个数据成员是指针,(2)有成员在构造函数中分配的其他资源; 而另一些类在创建对象时必须做一些特定的工作。
在这一章中,有以下的几点收获: 1、pair类型的使用相当频繁,如果需要定义多个相同的pair类型对象,可考虑利用typedef简化其声明: typedef pair A;这样,在后面的使用中就可以直接用A来代替前面繁琐的书写。
最近又重新拾起C++primer,发现每一次看都会有不同的体验,但每一次看后因为不常用,忘记得很快,所以记笔记是很关键的一环,咋一看是浪费时间,实际上是节省了很多时间。下面就把这一节的内容做一个简单的提炼和小节: 1、IO库类型不支持复制或赋值,因此,不能创建存放IO类型对象的容器。
Author:bakari Date:2012.11.2 1、参数传递问题: < 1 >、堆栈传参 < 2 >、寄存器传参(利用通用寄存器进行函数参数传递的方法) < 3 >、全局变量或静态变量传参 2、 Call Convention(函数调用约定) < 1 >、_cdecl a、 参数从右向左压入堆栈 b、 函数被调用者修改堆栈 c、 在win32应用程序里,宏APIENTRY,WINAPI,都表示_stdcall,非常常见. d、 C和C++程序的缺省调用方式。
Author:bakari Date:2012.10.26 这一讲的主要内容和上一讲相同,是上一讲的深入分析。内存对齐涉及内存实现的细节,复杂声明是对指针的深入理解,这些内容平时用到很少,学习之益于开拓思维,达到宏观调控自己的知识结构。
Author:bakari Date:2012.10.22 主要内容:内存对齐相关 1、 温故而知新:防御性编程的应用 防御性编程的详细讲解可见我的另一篇文章:http://www.cnblogs.
Author:bakari Date:2012.10.18 这段时间非常有幸能够跟着一个非常牛的学长学习编程,现将每次学到的内容作为整理,方便以后复习,也分享给需要的网友。 这是学长第一次讲,本次讲的内容比较基础和偏理论,是有关于防御性编程的,关于这方面我之前就记录过一篇文章,详细见: http://www.cnblogs.com/bakari/archive/2012/08/27/2658215.html 主要内容:防御性编程 概念解释:最简单的说法是:函数在执行前对相关参数的检查,使程序更具健壮性。
原文:http://blog.163.com/fan_cun_fu/blog/static/455609201132143043227/ 更加全面地用Google搜索的最好方式是点击高级搜索。 它可以让你搜索更加精准的词组,“所有词组”或者是适当的搜索框里输入词组的某一个特定关键词。
Author:bakari Date:2012.9.8 昨天在写一个旋转字符串的函数时,写着写着发现有好多种方法,最简单的莫过于替换然后覆盖再插入。不要小看这种小的算法,其实这其中蕴含着很多容易忽略的编程的细节。
一、概念理解: 1、冲突域(物理分段): 连接在同一导线上的所有工作站的集合,或者说是同一物理网段上所有节点的集合或以太网上竞争同一带宽的节点集合。这个域代表了冲突在其中发生并传播的区域,这个区域可以被认为是共享段。
Author:bakari Date:2012.9.3 交换程序是每个开始学习编程的人必学习的一个初级算法。算法思想很简单,就是为两个交换的双方在定义一个第三者即可。但越学到后面,你也许会发现这个程序也是蕴藏着很多知识点,并且一些知识点只要用这个作为例子就能非常好的理解,比如说在学习指针和函数时,一定会碰到的传值还是传指的问题。
这是在《unix网络编程》中看到的比较全面的解释,在此作为一个整理。 一 是网际网,采用TCP/IP协议族通信的任何网络都是网际网,因特网就是一个网际网。二 是因特网(the internet),它是一个专用名词,特指从ARPANET发展来的联结全球各个ISP的大型网际网。
Author:bakari Date: 2012.8.27 现在很多IT公司的面试题都或多或少会有复杂声明的题,有一点C基础的人或许能够瞎搬乱套做对,但这样你肯定不爽,一方面显得不专业,有点自欺欺人的感觉,另一方面如果遇到更加复杂的声明就彻底傻了,本篇主要就一些复杂的声明介绍一种方法,这个有些书上也有介绍,比如《C专家编程》。