随笔分类 - C、C++ 刷题
摘要:// 面试题49:丑数 // 题目:我们把只包含因子2、3和5的数称作丑数(Ugly Number)。求按从小到 // 大的顺序的第1500个丑数。例如6、8都是丑数,但14不是,因为它包含因子7。 // 习惯上我们把1当做第一个丑数。 #include // ====================算法1的代码==================== //不用额外的内存,直接计算 boo...
阅读全文
摘要:// 面试题48:最长不含重复字符的子字符串 // 题目:请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子 // 字符串的长度。假设字符串中只包含从'a'到'z'的字符。 #include #include // 方法一:蛮力法 //不想说话 // 方法一:动态规划 int longestSubstringWithoutDuplication_2(const std::...
阅读全文
摘要:// 面试题47:礼物的最大价值 // 题目:在一个m×n的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值 // (价值大于0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向左或 // 者向下移动一格直到到达棋盘的右下角。给定一个棋盘及其上面的礼物,请计 // 算你最多能拿到多少价值的礼物? #include #include int getMaxValue_solution1(...
阅读全文
摘要:// 面试题46:把数字翻译成字符串 // 题目:给定一个数字,我们按照如下规则把它翻译为字符串:0翻译成"a",1翻 // 译成"b",……,11翻译成"l",……,25翻译成"z"。一个数字可能有多个翻译。例 // 如12258有5种不同的翻译,它们分别是"bccfi"、"bwfi"、"bczi"、"mcfi"和 // "mzi"。请编程实现一个函数用来计算一个数字有多少种不同的翻译方法。 ...
阅读全文
摘要:// 面试题45:把数组排成最小的数 // 题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼 // 接出的所有数字中最小的一个。例如输入数组{3, 32, 321},则打印出这3个数 // 字能排成的最小数字321323。 #include #include #include int compare(const void* strNumber1, const vo...
阅读全文
摘要:// 面试题44:数字序列中某一位的数字 // 题目:数字以0123456789101112131415…的格式序列化到一个字符序列中。在这 // 个序列中,第5位(从0开始计数)是5,第13位是1,第19位是4,等等。请写一 // 个函数求任意位对应的数字。 #include #include using namespace std; int countOfIntegers(int ...
阅读全文
摘要:// 面试题43:从1到n整数中1出现的次数 // 题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。例如 // 输入12,从1到12这些整数中包含1 的数字有1,10,11和12,1一共出现了5次。 #include #include #include // ====================方法一==================== //逐个判断,时间...
阅读全文
摘要:// 面试题42:连续子数组的最大和 // 题目:输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整 // 数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。 #include bool g_InvalidInput = false;//全局错误处理方式 int FindGreatestSumOfSubArray(int *pData, int nLen...
阅读全文
摘要:// 面试题41:数据流中的中位数 // 题目:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么 // 中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值, // 那么中位数就是所有数值排序之后中间两个数的平均值。 #include #include #include using namespace std; template class Dyn...
阅读全文
摘要:// 面试题40:最小的k个数 // 题目:输入n个整数,找出其中最小的k个数。例如输入4、5、1、6、2、7、3、8 // 这8个数字,则最小的4个数字是1、2、3、4。 #include #include #include #include using namespace std; // ====================方法1==================== ...
阅读全文
摘要:// 面试题39:数组中出现次数超过一半的数字 // 题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例 // 如输入一个长度为9的数组{1, 2, 3, 2, 2, 2, 5, 4, 2}。由于数字2在数组中 // 出现了5次,超过数组长度的一半,因此输出2。 #include using namespace std; /*Random Partition*/ int...
阅读全文
摘要:// 面试题38:字符串的排列 // 题目:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc, // 则打印出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。 #include void Permutation(char* pStr, char* pBegin); void Permutation(char* pStr) { ...
阅读全文
摘要:// 面试题37:序列化二叉树 // 题目:请实现两个函数,分别用来序列化和反序列化二叉树。 #include "BinaryTree.h" #include #include using namespace std; void Serialize(const BinaryTreeNode* pRoot, ostream& stream)//序列化二叉树,ostream写文件流 { ...
阅读全文
摘要:// 面试题36:二叉搜索树与双向链表 // 题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求 // 不能创建任何新的结点,只能调整树中结点指针的指向。 #include #include "BinaryTree.h" //这个程序看的我真的是头大如牛 void ConvertNode(BinaryTreeNode* pNode, BinaryTreeNode** p...
阅读全文
摘要:文件ComplexList.h 文件ComplexList.cpp
阅读全文
摘要:// 面试题34:二叉树中和为某一值的路径 // 题目:输入一棵二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所 // 有路径。从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 #include #include "BinaryTree.h" #include using namespace std; void FindPath(BinaryTreeNode* pRoo...
阅读全文
摘要:// 面试题33:二叉搜索树的后序遍历序列 // 题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。 // 如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。 #include // BST:Binary Search Tree,二叉搜索树 bool VerifySquenceOfBST(int sequence[], int lengt...
阅读全文
摘要:// 面试题32(三):之字形打印二叉树 // 题目:请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺 // 序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印, // 其他行以此类推。 #include #include "BinaryTree.h" #include void Print(BinaryTreeNode* pRoot) { if...
阅读全文
摘要:// 面试题32(二):分行从上到下打印二叉树 // 题目:从上到下按层打印二叉树,同一层的结点按从左到右的顺序打印,每一层 // 打印到一行。 #include #include "BinaryTree.h" #include void Print(BinaryTreeNode* pRoot) { if (pRoot == nullptr) return; ...
阅读全文
摘要:// 面试题32(一):不分行从上往下打印二叉树 // 题目:从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。 #include #include "BinaryTree.h" #include void PrintFromTopToBottom(BinaryTreeNode* pRoot) { if (pRoot == nullptr) re...
阅读全文

浙公网安备 33010602011771号