随笔分类 -  剑指offer学习笔记

摘要:题目:在字符串中找出第一个只出现一次的字符。如果输入“abaccdeff”,则输出'b'解题思路:哈希。num[ch]记录字符ch出现的次数。#includeusing namespace std;int main(){ int num['z'+1]; string s; cin>>s; memset(num,0,sizeof(num)); for(int i=0;s[i]!='\0';i++) num[s[i]]++; for(int i=0;s[i]!='\0';i++) { if(num[s[i]... 阅读全文
posted @ 2013-09-01 15:46 icfnight 阅读(216) 评论(0) 推荐(0)
摘要:题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建新的节点,只能调整树中节点指针的指向。 解题思路:中序遍历就可解决。小->中->大 void doublelist(bTree *p,bTree **tail) //tail 为当前末尾的节点 { if(!p) return ; if(p->left) doublelist(p->left,tail); bTree *cur=p; cur->left=*tail; if(*tail!=NULL) *tail->right=... 阅读全文
posted @ 2013-08-31 14:05 icfnight 阅读(184) 评论(0) 推荐(0)
摘要:题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是,返回true,否则返回false。假设输入的数组任意两个数字都互不相同。解题思路:涉及到二叉树的问题,一般可以这样处理:找到根结点,把该树拆分成左、右子树,继续处理子树,这就变成了一个递归的过程。本题感觉不存在高深的算法,那么可以归结为找规律题,画些草图,不难发现序列的最后一个点即为树的根节点。bool judge(int a[],int len){ if(a==nuLL||len0) left=judge(a,i); bool right=true; if(i<len... 阅读全文
posted @ 2013-08-31 12:08 icfnight 阅读(252) 评论(0) 推荐(0)