摘要:
题目:二叉树的结点的定义如下:struct TreeNode { int m_nValue; TreeNode *m_pLeft; TreeNode *m_pRight;};输入二叉树中的两个结点,输出这两个结点在数中最低的共同父结点。答:#include "stdafx.h"#include <iostream>#include <fstream>#include <ctime>using namespace std;struct TreeNode { int m_nValue; TreeNode *m_pLeft; TreeNode 阅读全文
摘要:
题目:我们把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第1500个丑数。答:#include "stdafx.h"#include <iostream>using namespace std;//1、从1开始穷举,直到第1500个丑数,效率太低//判断number是否为丑数bool IsUgly(int number){ while (number % 2 == 0) { number = number / 2; } while (num... 阅读全文
摘要:
题目:写一个函数,它的原型是如下,在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr所指的内存。int continuemax(char *outputstr, char *inputstr)举例:intputstr被赋予"abcd12345ed125ss123456789",函数将返回9,outputstr所指的值为"123456789"。答:#include "stdafx.h"#include <iostream>using namespace std;// 阅读全文
摘要:
题目:一个整数数组里除了两个数字之外,其他的数字都出现了两次,找出这两个只出现一次的数字。要求:时间复杂度是O(n),空间复杂度是O(1)。答:#include "stdafx.h"#include <iostream>using namespace std;bool isBitOne(int number, int index){ number = number >> index; if (number & 1) { return true; } return false;}//找出数组中两个只出现一次的数字void FindNumber( 阅读全文
摘要:
题目:给定单链表,如果有环的话请返回从头结点进入环的第一个结点。答:#include "stdafx.h"#include <iostream>#include <fstream>#include <ctime>using namespace std;struct ListNode{ int m_nKey; ListNode* m_pNext;};//构造链表void CreateList(ListNode *&pHead, ListNode *&pFirstNode){ fstream fin("list.tx 阅读全文
摘要:
题目:输入一个字符串,打印出该字符串的所有子集。举例:输入字符串ab,则输出ab所有的子集{a b},{a},{b},{}。答:#include "stdafx.h"#include <iostream>using namespace std;//获取n个元素的子集void GetAllSubset(char *a, int *mask, int size, int c){ if (size == c) { cout<<"{ "; for (int i = 0; i < size; i++) { if (mask[i]... 阅读全文
摘要:
题目:输入一个字符串,打印该字符串的所有排列。举例:输入字符串abc,则输出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。答:#include "stdafx.h"#include <iostream>using namespace std;//交换两个数void swap(char &a, char &b){ char tmp = a; a= b; b = tmp;}//获取数组a的全排列void GetAllRange(char *a, int size, int c){ if (size == c) 阅读全文
摘要:
题目:用递归颠倒一个栈,例如输入栈{1, 2, 3, 4, 5},1在栈顶。颠倒之后的栈为{5, 4, 3, 2, 1},5处在栈顶。答:#include "stdafx.h"#include <iostream>#include <stack>using namespace std;void AddStackBottom(stack<int> &s, int top){ if (s.empty()) { s.push(top); } else { int tmp = s.top(); s.pop(); Ad... 阅读全文
摘要:
#include "stdafx.h"#include <iostream>using namespace std;#define MAXSIZE 20typedef struct{ int r[MAXSIZE + 1]; int length;}SqList;typedef SqList HeapType;//***********************************选择排序*************************************begin//查找最小值int SelectMinKey(const SqList& L, i 阅读全文
摘要:
题目:编码完成处理函数:函数将字符串中的字符'*'移到串的前面,前面的非'*'字符后移,但不能改变非'*'字符的先后顺序,函数返回串中字符'*'的数量。举例:原始串:ab**cd**e*12,处理后为*****abcde12,函数返回值为5。要求:使用尽量少的时间和辅助空间。答:#include "stdafx.h"#include <iostream>using namespace std;//将字符串中的*移到串的前部分int RemoveStarToFront(char *str){ if ( 阅读全文