![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
踏雪留印
关注设计,汲取思想
展开
-
MergeSortedList
#include#includetypedef struct LinkNode{ int val; LinkNode* next;}*LinkList;//不带头结点LinkNode* CreateLink(int n){ LinkList l=NULL;; if(n<=0){ printf("链表为空\n"); return NULL; } l=(LinkNode*原创 2016-08-16 11:48:06 · 184 阅读 · 0 评论 -
NumberOfOneInBinary
//计算整数中二进制1的个数(采用位运算)#include//向左进行移位int NumberOfOneInBinary(int n){ unsigned int flag=1; int count=0; while(flag){ if(n&flag) count++; flag=flag<<1; } return count;}//int NumberOfOneIn原创 2016-08-11 10:17:17 · 232 阅读 · 0 评论 -
MaxSubSumArray
bool inputValid=false;int MaxSubSumArray(int* data,int length){ if(data==NULL || length<=0){ inputValid=true; return 0; } int sum=0; int maxSum=0x80000000; for(int i=0;i<length;i++){ if(su原创 2016-09-02 11:03:42 · 343 阅读 · 0 评论 -
MinInStack
#include#includetemplate class MinInStack{public: MinInStack(){}; virtual ~MinInStack(void){}; T& top(); const T& top() const; void push(const T& e); void pop(); const T& min() const;priv原创 2016-08-24 10:41:06 · 222 阅读 · 0 评论 -
PowerWithUnsignedExponent
//考虑Exponent周全#includebool invalidInput=false;bool equal(double num1,double num2){ if(num1-num2>-0.0000001&&num1-num2<0.0000001) return true; else return false;}double PowerWithUnsignedExpone原创 2016-08-12 10:34:10 · 283 阅读 · 0 评论 -
StackWithInOrder
bool isPopOrder(const int* pPush,const int* pPop,int length){ bool flag=false; if(pPush!=NULL&&pPop!=NULL&&length>0){ const int *pPushNext=pPush; const int *pPopNext=pPop; std::stack stackData原创 2016-08-25 10:31:30 · 204 阅读 · 0 评论 -
Print1ToMaxNDigits
#include#include#includebool Increment(char* number){ bool overflow=false; int carryover=0; int length=strlen(number); for(int i=length-1;i>=0;i--){ int digit=number[i]-'0'+carryover; if(i=原创 2016-08-13 11:35:50 · 271 阅读 · 0 评论 -
NumberOf1Between1AndN
#include#include#includeint PowerOfBase10(int len){ int number=1; for(int i=1;i<=len;i++) number*=10; return number;}int NumberOf1(char* str){ if(str==NULL||*str=='\0'||*str'9') return 0原创 2016-09-05 09:28:53 · 503 阅读 · 0 评论 -
DeleteNode
#include#includetypedef struct LinkNode{ int val; LinkNode* next;}*LinkList;//不带头结点LinkNode* CreateLink(int n){ LinkList l=NULL;; if(n<=0){ printf("链表为空\n"); return NULL; } l=(LinkNode*原创 2016-08-14 10:08:39 · 1925 阅读 · 0 评论 -
ReordeArray
#includebool isEven(int n){ return (n&1)==0;}void Reorder(int *pData,int length,bool (*fun)(int)){ if(pData==NULL||length==0) return; int temp; int *p=pData; int *q=pData+length-1; while(p<q)原创 2016-08-14 10:47:45 · 186 阅读 · 0 评论 -
FindKthtoTail
#include#includetypedef struct LinkNode{ int val; LinkNode* next;}*LinkList;//不带头结点LinkNode* CreateLink(int n){ LinkList l=NULL;; if(n<=0){ printf("链表为空\n"); return NULL; } l=(LinkNode*原创 2016-08-14 11:35:07 · 546 阅读 · 0 评论 -
ReseverLink
#include#includetypedef struct LinkNode{ int val; LinkNode* next;}*LinkList;//不带头结点LinkNode* CreateLink(int n){ LinkList l=NULL;; if(n<=0){ printf("链表为空\n"); return NULL; } l=(LinkNode*原创 2016-08-14 11:53:11 · 611 阅读 · 0 评论 -
UglyNumber
#includebool isUglyNumber(int num){ while(num%2==0) num/=2; while(num%3==0) num/=3; while(num%5==0) num/=5; return num==1?true:false;}int getUglyNumber(int n){ if(n<=0) return 0; int原创 2016-09-05 11:26:23 · 237 阅读 · 0 评论 -
PrintFromTopToBottom
#define Nil 0#include#includetypedef struct BiTNode{ int data; BiTNode *lchild; BiTNode *rchild;}*BiTree;void CreateBiTree(BiTree &T){ int temp; printf("请输入节点的值\n"); scanf("%d",&temp); if(原创 2016-08-26 10:14:45 · 438 阅读 · 0 评论 -
Fibonacci
//Fibonacci函数递归与循环实现#includelong long Fibonacci_1(unsigned int n){ if(n==0) return 0; if(n==1) return 1; else return Fibonacci_1(n-1)+Fibonacci_1(n-2);}long long Fibonacci(unsigned int n){原创 2016-08-11 09:41:49 · 161 阅读 · 0 评论 -
KLastNumbers
#include#include#include#includeusing namespace std;typedef multiset> intset;typedef multiset>::iterator setIterator;void KLastNumberAgain(int* input,int len,int k){ if(input==NULL||lenlen)原创 2016-09-01 11:29:42 · 229 阅读 · 0 评论 -
AssignmentOperator
#include#includeclass CMyString{public:CMyString(char *pData=NULL);//含有无参构造函数CMyString(const CMyString &str);~CMyString();void Print();CMyString& operator=(const CMyString &str); private:char* p_Data;原创 2016-08-05 11:12:49 · 1247 阅读 · 0 评论 -
ubStructInTree
#define Nil 0#include#includetypedef struct BiTNode{ int data; BiTNode *lchild,*rchild;}*BiTree;void CreateBiTree(BiTree &T){ int val; T=(BiTNode*)malloc(sizeof(BiTNode)); if(!T){ printf("原创 2016-08-17 11:22:39 · 234 阅读 · 0 评论 -
FindInPartiallySortedMatrix
#includeusing namespace std;//从右上角不断地缩小查找范围的思想bool Find(int * matrix,int rows,int columns,int number){ bool found=false; if(matrix!=NULL&&rows>0&&columns>0){ int row=0; int column=columns-1;原创 2016-08-06 10:57:18 · 437 阅读 · 0 评论 -
ReplaceBlank
//进行空格的替换#includeusing namespace std;void ReplaceBlank(char str[],int length){ if(str==NULL||length<=0) return ; int orignallength=0;//字符符串的实际长度 int blankNum=0; int i=0; for(i=0;str[i]!='\0';i原创 2016-08-06 12:11:06 · 894 阅读 · 0 评论 -
CopyComplexNodes
#includestruct ComplexNode{ int value; ComplexNode* next; ComplexNode* sibling;};ComplexNode* CreateComplexNode(int value){ ComplexNode* p=new ComplexNode(); p->value=value; p->next=NULL; p-原创 2016-08-28 11:15:19 · 356 阅读 · 0 评论 -
MirrorOfBinaryTree
#define Nil 0#include#includetypedef struct BiTNode{ int data; BiTNode *lchild,*rchild;}*BiTree;void CreateBiTree(BiTree &T){ int val; T=(BiTNode*)malloc(sizeof(BiTNode)); if(!T){ printf("原创 2016-08-18 12:05:45 · 416 阅读 · 0 评论 -
PrintLinkReverse
//从尾向前输出链表节点:借助栈,或递归#include#includetypedef struct LinkNode{int val;LinkNode *next;}*LinkList;//没有头结点LinkNode* CreateLinkList(){int n,i;LinkNode *l,*p,*q;l=NULL;printf("请输入链表节点原创 2016-08-07 09:50:27 · 457 阅读 · 0 评论 -
ConvertBinarySearchTree
#define Nil 0#include#includetypedef struct BiTNode{ int data; BiTNode* lchild; BiTNode* rchild;}*BiTree;void CreateBiTree(BiTree &T){ int temp; printf("请输入节点的值\n"); scanf("%d",&temp); if(原创 2016-08-29 11:14:19 · 377 阅读 · 0 评论 -
StringPermutation
#includevoid Permutation(char* pStr,char* begin){ if(*begin=='\0') printf("%s\n",pStr); else{ for(char* ch=begin;*ch!='\0';ch++){ char temp=*begin; *begin=*ch; *ch=temp; Permutation原创 2016-08-30 10:22:18 · 360 阅读 · 0 评论 -
StackWithTwoQueues
#include"CStack.h";void main(){ CStack s; s.push('a'); s.push('b'); s.push('c'); cout<<s.pop()<<endl; cout<<s.pop()<<endl; s.push('d'); s.push('e'); cout<<s.pop()<<endl; cout<<s.pop()<<endl原创 2016-08-09 11:17:36 · 216 阅读 · 0 评论 -
QueueWithTwoStacks
#includeusing namespace std;#include#includetemplate class CQueue{public: CQueue(void); ~CQueue(void); void appendTail(const T& node); T deleteHead();private: stack s1; stack s2;};templ原创 2016-08-09 10:04:13 · 497 阅读 · 0 评论 -
MoreThanHalfNumber
#includeint Partition(int *number,int low,int high){ int pivot=number[low]; while(low<high){ while(low=pivot) high--; number[low]=number[high]; while(low<high&&number[low]<=pivot) low++; nu原创 2016-08-31 11:07:40 · 256 阅读 · 0 评论 -
MinNumberInRotatedArray
//折半查找算法的变种#includeusing namespace std;int minInOrder(int *number,int low,int high){int result=number[low];while(lowif(result>number[low])result=number[low];low++;}return result;原创 2016-08-10 10:50:26 · 223 阅读 · 0 评论 -
PathInTree
#define Nil 0#include#include#includetypedef struct BiTNode{ int data; BiTNode* lchild; BiTNode* rchild;}*BiTree;void CreateBiTree(BiTree &T){ int temp; printf("请输入节点的值!\n"); scanf("%d",&t原创 2016-08-27 10:07:50 · 396 阅读 · 0 评论