自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(74)
  • 收藏
  • 关注

原创 35. Search Insert Position python3

35.Search Insert PositionEasyGiven a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.You may as...

2019-05-14 21:41:47 177

原创 28. Implement strStr() python3

28.Implement strStr()EasyImplementstrStr().Return the index of the first occurrence of needle in haystack, or-1if needle is not part of haystack.Example 1:Input: haystack = "hello", nee...

2019-05-14 11:08:24 211

原创 27. Remove Element(python3)

27.Remove ElementEasyGiven an arraynumsand a valueval, remove all instances of that valuein-placeand return the new length.Do not allocate extra space for another array, you must do this by...

2019-05-05 19:52:09 352

原创 26. Remove Duplicates from Sorted Array(python3)

26.Remove Duplicates from Sorted ArrayEasyGiven a sorted arraynums, remove the duplicatesin-placesuch that each element appear onlyonceand return the new length.Do not allocate extra space...

2019-05-05 14:33:45 264

原创 21. Merge Two Sorted Lists(python3)

21.Merge Two Sorted ListsMerge 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.Example:Input: 1->2-&gt...

2019-04-27 12:55:53 291

原创 20. Valid Parentheses(python3)

20.Valid ParenthesesEasyGiven a string containing just the characters'(',')','{','}','['and']', determine if the input string is valid.An input string is valid if:Open brackets must be...

2019-04-25 08:55:05 186

原创 14. Longest Common Prefix(python3)

14.Longest Common PrefixWrite a function to find the longest common prefix string amongst an array of strings.If there is no common prefix, return an empty string"".Example 1:Input: ["flowe...

2019-04-21 10:49:07 366

原创 leetcode 13. Roman to Integer(python3)

13.Roman to IntegerRoman numerals are represented by seven different symbols:I,V,X,L,C,DandM.Symbol ValueI 1V 5X 10L 50C ...

2019-04-17 11:23:20 156

原创 leetcode 9. Palindrome Number(python3)

9.Palindrome NumberDetermine whether an integer is a palindrome. An integerisapalindrome when itreads the same backward as forward.Example 1:Input: 121Output: trueExample 2:Input: -...

2019-04-16 21:57:04 139

原创 Leetcode 7. Reverse Integer(python3)

7.Reverse IntegerGiven a 32-bit signed integer, reverse digits of an integer.Example 1:Input: 123Output: 321Example 2:Input: -123Output: -321Example 3:Input: 120Output: 21Not...

2019-04-16 11:07:26 110

原创 leetcode 1. Two Sum(python)

1.Two SumGiven an array of integers, returnindicesof the two numbers such that they add up to a specific target.You may assume that each input would haveexactlyone solution, and you may not u...

2019-04-15 19:14:40 87

转载 ++i和i++哪个效率高

++i 与i++哪个效率更高?解析:在这里声明,简单的比较前缀自增运算符和后缀自增运算符的效率是片面的,因为存在很多因素影响这个问题的答案。首先考虑内建数据类型的情况:如果自增运算表达式的结果没有被使用,而是仅仅简单的用于增加一员操作数,答案是明确的,前缀法和后缀法没有任何区别,编译器的处理都应该是相同的,很难想象得出有什么编译器实现可以别出心裁在二者之间制造任何差异。我们看看下面这个程序:   ...

2018-04-02 11:45:21 270

转载 深入理解TCP三次握手

三次握手在《计算机网络》一书中其中有提到,三次握手的目的是“为了防止已经失效的连接请求报文段突然又传到服务端,因而产生错误”,这种情况是:一端(client)A发出去的第一个连接请求报文并没有丢失,而是因为某些未知的原因在某个网络节点上发生滞留,导致延迟到连接释放以后的某个时间才到达另一端(server)B。本来这是一个早已失效的报文段,但是B收到此失效的报文之后,会误认为是A再次发出的一个新的连...

2018-04-02 11:08:54 345

转载 深入理解进程与线程的区别

深入理解进程与线程的区别:关于进程和线程,大家总是说的一句话是“进程是操作系统分配资源的最小单元,线程是操作系统调度的最小单元”。这句话理论上没问题,我们来看看什么是所谓的“资源”呢。什么是计算机资源经典的冯诺依曼结构把计算机系统抽象成 CPU + 存储器 + IO,那么计算机资源无非就两种:1. 计算资源2. 存储资源CPU是计算单元,单纯从CPU的角度来说它是一个黑盒,它只对输入的指令和数据进...

2018-04-02 11:00:13 195

转载 STL容器底层原理

1、vector 容器vector 的数据安排以及操作方式,与 array 非常相似。两者的唯一区别在于空间的运用的灵活性。array 是静态空间,一旦配置了就不能改变,vector 是动态数组。在堆上分配空间。vector 是动态空间,随着元素的加入,它的内部机制会自行扩充空间以容纳新元素(有保留内存,如果减少大小后内存也不会释放。如果新值>当前大小时才会再分配内存,这大大影响了 vect...

2018-04-02 10:55:08 3166

原创 IP地址的分类

A类地址:以0开头,   第一个字节范围:1~127(1.0.0.0 - 127.255.255.255);B类地址:以10开头,  第一个字节范围:128~191(128.0.0.0 - 191.255.255.255);C类地址:以110开头, 第一个字节范围:192~223(192.0.0.0 - 223.255.255.255);D类地址:以1110开头,第一个字节范围:224~239(2...

2018-02-22 08:05:23 396

原创 交换机、路由器、网关

交换机、路由器、网关的概念,并知道各自的用途1)交换机在计算机网络系统中,交换机是针对共享工作模式的弱点而推出的。交换机拥有一条高带宽的背部总线和内部交换矩阵。交换机的所有的端口都挂接在这条背 部总线上,当控制电路收到数据包以后,处理端口会查找内存中的地址对照表以确定目的MAC(网卡的硬件地址)的NIC(网卡)挂接在哪个端口上,通过内部 交换矩阵迅速将数据包传送到目的端口。目的MAC若不存在,交换...

2018-02-22 08:04:24 221

原创 TCP的三次握手过程?为什么会采用三次握手,若采用二次握手可以吗?

TCP的三次握手过程?为什么会采用三次握手,若采用二次握手可以吗?建立连接的过程是利用客户服务器模式,假设主机A为客户端,主机B为服务器端。(1)TCP的三次握手过程:主机A向B发送连接请求;主机B对收到的主机A的报文段进行确认;主机A再次对主机B的确认进行确认。(2)采用三次握手是为了防止失效的连接请求报文段突然又传送到主机B,因而产生错误。失效的连接请求报文段是指:主机A发出的连接请求没有收到...

2018-02-22 08:02:31 300

原创 DNS域名系统,简单描述其工作原理。

DNS域名系统:当DNS客户机需要在程序中使用名称时,它会查询DNS服务器来解析该名称。客户机发送的每条查询信息包括三条信息:包括:指定的DNS域名,指定的查询类型,DNS域名的指定类别。基于UDP服务,端口53. 该应用一般不直接为用户使用,而是为其他应用服务,如HTTP,SMTP等在其中需要完成主机名到IP地址的转换。...

2018-02-22 08:01:30 3280

原创 TCP和UDP的区别?

TCP提供面向连接的、可靠的数据流传输,而UDP提供的是非面向连接的、不可靠的数据流传输。TCP传输单位称为TCP报文段,UDP传输单位称为用户数据报。TCP注重数据安全性,UDP数据传输快,因为不需要连接等待,少了许多操作,但是其安全性却一般。TCP对应的协议和UDP对应的协议TCP对应的协议:(1) FTP:定义了文件传输协议,使用21端口。(2) Telnet:一种用于远程登陆的端口,使用2...

2018-02-22 08:00:46 167

原创 在浏览器中输入www.baidu.com后执行的全部过程

在浏览器中输入www.baidu.com后执行的全部过程1、客户端浏览器通过DNS解析到www.baidu.com 的IP地址220.181.27.48,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到220.181.27.48,然后通过TCP进行封装数据包,输入到网络层。2、在客户端的传输层,把HTTP会话请求分成报文段,添加源和目的端口,如服务器使用80端口监听客户...

2018-02-22 07:58:54 817

原创 TCP三次握手和四次挥手的全过程

三次握手:第一次握手:客户端发送syn包(syn=x)到服务器,并进入SYN_SEND状态,等待服务器确认;第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进...

2018-02-22 07:57:35 108

原创 ARP、RARP协议

ARP是地址解析协议1:首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。2:当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有:源主机 IP地址,源主机MAC地址,目的主机的IP 地址。3:当本网络的所有主机收到该ARP...

2018-02-22 07:54:04 283

原创 请说出const关键字尽可能多的作用

   const关键字至少有下列n个作用:   (1)欲阻止一个变量被改变,可以使用const关键字。在定义该const变量时,通常需要对它进行初始化,因为以后就没有机会再去改变它了;   (2)对指针来说,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const;   (3)在一个函数声明中,const可以修饰形参,表明它是一个输入参数,在函数内部不能改变其...

2018-02-22 07:46:01 193

原创 static变量有什么作用

static静态变量有什么作用在C语言中static全局变量和普通的全局变量的区别在于static只被初始化一次,这样做的目的是为了防止在其他文件中引用。static局部变量和普通局部变量的区别在于static局部变量只被初始化一次,下一次的运算依据是上一次的结果值。static函数与普通函数的区别在于作用域不一样,static()函数只在一个源文件中有效,不能被其他源文件使用。在C++中类的数据...

2018-02-11 12:19:05 231

原创 深拷贝与浅拷贝

浅拷贝只是对指针的拷贝,拷贝后两个指针指向同一个内存空间,浅拷贝只是增加了一个指针指向已经存在的内存,分配一次内存,调用两次析构函数,会造成内存泄漏。深拷贝不但对指针进行拷贝,而且对指针指向的内容进行拷贝,会申请一个内存,经深拷贝后的指针是指向两个不同地址的指针。释放内存的时候就不会出现在浅拷贝时重复释放同一内存的错误。操作符‘=’的重载。最能体现深层拷贝与浅层拷贝

2018-01-29 17:07:43 113

原创 String类的函数实现

普通构造函数/拷贝构造函数/析构函数/赋值运算符函数/+运算符函数/相等运算符函数/索引运算符函数/length函数/友元函数class String{ friend std::ostream& operator<<(std::ostream& os,const string& s);//友元函数public: String(const char* str=NULL);//普通构造函数

2018-01-29 15:37:19 235

原创 字符串拷贝/字符串比较/字符串连接/字符串长度/字符子串/内存块复制/内存块赋值初始化库函数实现

字符串拷贝、字符串比较、字符串连接、字符串长度、字符子串、内存块复制、内存块赋值初始化//字符串拷贝char* strcpy(char* strDest,const char* strSrc){ assert(strDest!=NULL && strSrc!=NULL); if(strDest==strSrc) return strDest; char *address=strD

2018-01-27 21:17:54 288

原创 反转链表,递归/非递归实现

Struct ListNode{ int data; ListNode* next;}//递归实现ListNode * ReverseList(ListNode * head){ //如果链表为空或者链表中只有一个元素 if(head==NULL || head->next==NULL) return head; else { ListNode* newHead=Re

2018-01-26 21:55:41 138

原创 链表归并排序

Struct ListNode{ int data; ListNode* next;}ListNode* GetMidNode(ListNode* list){ if(list==NULL) return NULL; ListNode* low=list; ListNode* fast=list; while(fast->next->next!=NULL) { l

2018-01-26 21:20:53 177

原创 二分查找法递归和非递归实现

//非递归实现int BinarySearch(int A[], int length, int number){ if(A==NULL || length<=0) return -1; int start=0; int end=length-1; while(start<end) { int mid=(start+end)/2; if(A[mid]==number)

2018-01-26 16:27:33 132

原创 排序算法总结

//选择排序void SelectSort(int* data,int length){ if(data==NULL || length&lt;=0) return; for(int i=0;i&lt;length-1;i++) { int min=i; for(int j=i+1;j&lt;length;j++) { if(data[j]&lt;data[min]...

2018-01-25 21:56:04 189

原创 二叉树遍历中序非递归/递归、前序非递归/递归、后序遍历非递归/递归、层序遍历

二叉树结点结构struct BinaryTreeNode{ int m_nValue; BinaryTreeNode* m_pLeft; BinaryTreeNode* m_pRight;}struct BinaryTreeNode{ int m_nValue; BinaryTreeNode* m_pLeft; BinaryTreeNode* m_pRight;}

2018-01-23 22:35:07 124

原创 树中两个结点的最低公共祖先

题目:输入两个树结点,求它们的最低公共祖先题目一:如果这个树是二叉搜索树,二叉搜索树是排序过的,位于左子树的结点都比父结点小,而位于右子树的结点都比父结点大,我们只需要从树的根结点开始和两个输入的结点比较,如果输入两个结点都比根结点小,那么最低的共同父结点一定在当前结点的左子树中,于是下一步遍历当前结点的这左子结点。如果当前结点的值比两个结点都小,那么最低共同父结点一定在当前结点的右子树中,于

2018-01-22 22:23:37 107

原创 把字符串转换成整数

题目:写一个函数StrToInt,实现把字符串转换成整数的功能。不能使用atoi或者其他类似的库函数。测试用例:功能测试(输入的字符串表示正数、负数、0)边界值测试(最大的正整数、最小的负整数)特殊输入测试(输入的字符串为NULL指针、输入字符串为空字符串、输入的字符串中有非数字字符等)代码如下: enum Status{kValid=0,kInvalid};int g_nS

2018-01-22 11:22:05 190

原创 圆圈中最后剩下的数字

题目:0,1,...n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。分析:例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前四个数字依次是2、0、4、1,因此最后剩下的数字是3。这个是有名的约瑟夫环问题。我们介绍两种方法:一种方法是用环形链表模拟圆圈的经典解法,第二种方法是分析每次被删除的数字的

2018-01-21 21:52:25 202

原创 翻转单词顺序VS左旋转字符串

题目一:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串“I am a student.”,则输出"student. a am I"。分析:第一步翻转句子中所有的字符。比如翻转“I am a student.”中的所有字符“.tneduts a ma I”,此时不但翻转了句子单词的顺序,单词内部的字符顺序也被翻转了.第二步再

2018-01-19 22:59:27 180

原创 和为S的两个数字VS和为S的连续正数序列

题目一:输入一个递增序列的数组和一个数字S,在数组中查找两个数,使得它们的和正好是S。如果有多对数字的和等于S,输出任意一对即可。分析:例如输入数组{1、2、4、7、11、15}和数字15。由于4+11=15,因此输出4和11。首先想到可以用两个循环嵌套来查找,但是时间复杂度O(n^2)。显然不是最好的解法,下面我们寻找更加好的解法,我们可以使用两个指针。首先定义两个指针,第一个指针指向数

2018-01-19 22:15:12 149

原创 数组中只出现一次的数字

题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度为O(n),空间复杂度是O(1)。分析:例如输入数组{2,4,3,6,3,2,5,5},因为只有4、6这两个数字只出现了一次,其他数字都出现了两次,所以输出4和6。我们可以先考虑这个数组中只有一个数字只出现了一次,其他的都出现了两次,来找出这个数字。异或运算的一个性质:任何一个数字异

2018-01-19 21:19:32 150

原创 二叉树的深度

题目一:输入一课二叉树的根结点,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。二叉树的结点定义如下:struct BinaryTreeNode{ int m_nValue; BinaryTreeNode* m_pLeft; BinaryTreeNode* m_pRight;}思路:如果一棵树只有一个结点,它的深度为1。如果根结点只

2018-01-19 16:21:57 476

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除