喜刷刷
biubiu_scut
这个作者很懒,什么都没留下…
展开
-
喜刷刷
二进制中1的个数 int numberOf1(int num) { int i=1; int count=0; while(i) { if(num&i) { count++; } i=i<<1; } return count; } 选择第一个数为key,将数组分为两部分,左边小于key,右边大于key int partition(int* a, i原创 2015-03-09 21:53:44 · 645 阅读 · 0 评论 -
求二叉树深度and判断是否是平衡二叉树
int deepOfTree(BinaryTreeNode* pRoot) { if(pRoot==NULL)return 0; int leftHeight = deepOfTree(pRoot->m_pLeft); int rightHeight = deepOfTree(pRoot->m_pRight); return 1+max(leftHeight, rightHeight);原创 2015-03-13 13:08:24 · 524 阅读 · 0 评论 -
求两个单链表交点and判断链表是否有环
求单链表交点算法: 先求得两条链表各自的长度,如果最后一个节点的地址相同,则确定链表有交点。然后求出长度差值k,让长的链表指针先走k步,然后两个链表指针同时走,边走边比较,第一次相等处即是交点。 代码: struct Node { int data; struct Node * next; }; Node* FixIntersetion(Node*原创 2015-03-13 21:01:29 · 1142 阅读 · 0 评论 -
将字符串中的cvt(CVT)换成cvte(CVTE)and求树的节点数and斐波那契数列
将字符串中的cvt(CVT)换成cvte(CVTE) string fix(char* str, int n) { int i=0; string newStr; while(i<n) { while(str[i]!='c'&&str[i]!='C'&&i<n) { newStr+=str[i]; i++; } if(i+2<n && str[i]=='c原创 2015-03-15 20:33:51 · 852 阅读 · 0 评论 -
C++ 中string.find() 函数的用法总结(转载)
#include #include using namespace std; void main() { [cpp] view plaincopy ////find函数返回类型 size_type string s("1a2b3c4d5e6f7g8h9i1a2b3c4d5e6f7g8ha9i"); string flag转载 2015-05-03 00:33:25 · 422 阅读 · 0 评论 -
基数排序
由于总是碰到排序问题,而且要求时间复杂度是O(n),想到了基数排序。 首先,不得不说,基数排序这算法的排序过程算是比较好玩的,比较特别,向那些大胡子致敬。 编程论到极致,核心非代码,即思想。 一点不假 基数排序(以整形为例),将整形10进制按每位拆分,然后从低位到高位依次比较各个位。每次比较完进行排序,直到整个数组有序 主要分为两个过程: (1)原创 2015-05-29 20:36:59 · 435 阅读 · 0 评论 -
递归求全排列
void pailie(char a[], int s, int t, int n)//求全排列 { if(s==t) { copy(a, a+n, ostream_iterator(cout, " ")); cout << endl; } for(int i=s; i<=t; i++) { swap(a[s],a[i]); pailie(a, s+1, t, n);原创 2015-04-12 18:30:42 · 547 阅读 · 0 评论