![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编程语言
宁静的银杏树
这个作者很懒,什么都没留下…
展开
-
leetcode:Remove Nth Node From End of List
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode *re原创 2014-04-30 15:10:05 · 525 阅读 · 0 评论 -
leetcode:Reorder List
题目思路比较直接:1)把整个链表划分成2个等长的子链表,如果原链表长度为奇数,那么第一个子链表的长度多1。2)翻转第二个子链表;3)将两个子链表合并。代码里有些变量可以省去,为了看起来逻辑清晰,还是保留了。整个链表遍历了3次,但是没有使用额外空间。原创 2014-04-22 14:16:03 · 475 阅读 · 0 评论 -
leetcode:Insertion Sort List
这道题算法思路很简单,就是简单插入算法,但是由于是对原创 2014-04-22 23:31:23 · 489 阅读 · 0 评论 -
linux系统下如何配置codeblocks以编译Mysql
linux下,使用了codeblocks,有各种编写代码的方便之处,但是遇到类似mysql这样的文件,编译时需要附带链接库等,就感觉手足无措,似乎就没办法编译了,本来是用codeblocks编辑好代码后,仍然通过终端来编译,但是毕竟不是个办法,so,果断百度找办法……以下是搜到的可以顺利编译Mysql的解决方法: 进入 project ------> build options转载 2014-05-15 11:17:54 · 763 阅读 · 0 评论 -
leetcode:Sort List
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode *so原创 2014-04-11 11:11:22 · 455 阅读 · 0 评论 -
typedef和define具体的详细区别
1) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错。例如:#define PI 3.1415926 程序中的:area=PI*r*r 会替换为3.1415926*r*r 如果你把#define语句中的数字9 写成字母g 预处理也照样带入。 2)typedef是在编译时转载 2014-05-18 20:10:34 · 558 阅读 · 0 评论 -
leetcode:Plus One
class Solution {public: vector plusOne(vector &digits) { int len=digits.size(); int i,carry=1; for(i=len-1;i>=0;i--) { digits[i]=digits[i]+carry; carr原创 2014-04-11 14:01:04 · 484 阅读 · 0 评论 -
leetcode:4Sum
class Solution {public: vector > fourSum(vector &num, int target) { vector> result; result.clear(); sort(num.begin(),num.end()); int i,j,cur; for(i=0;i<num.size();i++) { i原创 2014-04-28 15:32:31 · 562 阅读 · 0 评论 -
leetcode:3Sum
求一个队列中三个之和为0的子列,并以非原创 2014-04-28 14:13:11 · 553 阅读 · 0 评论 -
leetcode:3Sum Closest
class Solution {public: int threeSumClosest(vector &num, int target) { int mingaps,gaps; sort(num.begin(),num.end()); mingaps=num[0]+num[1]+num[2]-target; if(mingaps==0) return ta原创 2014-04-28 15:06:38 · 538 阅读 · 0 评论 -
leetcode:Swap Nodes in Pairs
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode *sw原创 2014-05-13 16:55:54 · 455 阅读 · 0 评论 -
找出有环链表中环的起始节点
给定一个有环的链表,写一个算法,找出环的起点。例如:输入:A->B->C->D->E->C[与前面的C是同一个节点]输出:C判断一个链表是否存在环有一个简单的方法,就是使用一个快指针、和一个慢指针,快指针每次走两步,慢指针每次走一步,则如果有环,它们最后必然会相遇的。本题的难点在于要找出环的起点。其实也不难,与判断是否有环类似,用两个步长分别为1和2的指针遍历链表,直到两者原创 2014-04-17 14:27:55 · 1818 阅读 · 0 评论 -
关于数组的几道面试题
原文地址:http://blog.csdn.net/hackbuteer1/article/details/80352611、快速找出一个数组中的最大数、第二大数。 思路:如果当前元素大于最大数 max,则让第二大数等于原来的最大数 max,再把当前元素的值赋给 max。如果当前的元素大于等于第二大数secondMax的值而小于最大数max的值,则要把当前元素的值赋给 seco转载 2014-09-12 16:20:20 · 677 阅读 · 0 评论 -
void及void指针含义的深刻解析
void的含义void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型。void指针使用规范①void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值。例如:int * pint;void *pvoid;pvoid = pint; /* 不过不能 pint= pvoid; */如果要将pvoid赋给其他类型指针,则需转载 2014-04-17 11:09:08 · 418 阅读 · 0 评论 -
C++ 将整个文件一次读入string
IOStream著名专家Dietmar Kuehl给过两个方法 1、使用流迭代器 这种方法很简单方便,但有一个缺点就是会将文件中的空格省掉 std::ifstream in("some.file"); std::istreambuf_iterator beg(in), end; std::string str(beg, en转载 2014-05-04 15:48:40 · 2060 阅读 · 0 评论 -
void*指针
指针有两个属性:指向变量/对象的地址和长度但是指针只存储地址,长度则取决于指针的类型编译器根据指针的类型从指针指向的地址向后寻址指针类型不同则寻址范围也不同,比如:int*从指定地址向后寻找4字节作为变量的存储单元double*从指定地址向后寻找8字节作为变量的存储单元void指针则不知道他所指向的变量的大小,,他只知道他所指的空间的起始地址, 因此不能引用所指向的内转载 2014-04-17 11:11:33 · 964 阅读 · 0 评论 -
leetcode:Binary Tree Postorder Traversal
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Soluti原创 2014-04-17 22:23:06 · 508 阅读 · 0 评论 -
二叉树的非递归遍历
二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现。在三种遍历中,前序和中序遍历的非递归算法都很容易实现,非递归后序遍历实现起来相对来说要难一点。一.前序遍历 前序转载 2014-04-17 22:27:30 · 489 阅读 · 0 评论 -
一个程序包含几个段
站在汇编语言的角度,一个程序分为:数据段 -- DS堆栈段 -- SS代码段 -- CS扩展段 -- ES站在高级语言的角度,根据APUE,一个程序分为如下段:textdata (initialized)bssstackheap代码段 -- texttext段在内存中被映射为只读,但.data和.bss是可写的。text段是程序代码段,在AT91转载 2014-04-18 09:19:49 · 1090 阅读 · 0 评论 -
leetcode: Unique Binary Search Trees
class Solution {public: int numTrees(int n) { if(n<=1) return 1; if(n==2) return 2; vector sum(n+1,0); sum[0]=1; sum[1]=1; int i,j; for(i=2;i<=n;i++)原创 2014-05-06 16:44:27 · 446 阅读 · 0 评论 -
leetcode:Copy List with Random Pointer
比起标准的链表深拷贝,还需要了解一个random pointer的信息。需要建立起新的链表单元和旧的链表单元之间的一一对应关系,然后将所有旧的random pointer更换为新的random pointer。这样就要求两次扫描,O(2n)。原创 2014-04-27 17:35:23 · 444 阅读 · 0 评论 -
leetcode:Binary Tree Inorder Traversal
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Soluti原创 2014-05-07 20:39:06 · 483 阅读 · 0 评论 -
leetcode:Binary Tree Level Order Traversal
如果直接是层次遍历的话比较容易,关键是每层要原创 2014-05-07 21:06:35 · 597 阅读 · 0 评论 -
面向对象的5个基本设计原则
面向对象的3个基本要素:封装、继承、多态面向对象的5个基本设计原则:单一职责原则(Single-Resposibility Principle) 其核心思想为:一个类,最好只做一件事,只有一个引起它的变化。单一职责原则可以看做是低耦合、高内聚在面向对象原则上的引申,将职责定义为引起变化的原因,以提高内聚性来减少引起变化的原因。职责过多,可能引起它变化的原因就越多,这将导致职责依赖转载 2014-09-14 10:24:12 · 438 阅读 · 0 评论