
剑指offer
&话梅
这个作者很懒,什么都没留下…
展开
-
剑指offer面试题14:剪绳子(动态规划)
题目:给你一根长度为n的绳子,请把绳子剪成m段 (m和n都是整数,n>1并且m>1)每段绳子的长度记为k[0],k[1],...,k[m].请问k[0]*k[1]*...*k[m]可能的最大乘积是多少?例如,当绳子的长度为8时,我们把它剪成长度分别为2,3,3的三段,此时得到的最大乘积是18.关键点:第一刀有n-1个选择,第一段绳子长度可能为1,2,3.....n-1; ...原创 2019-05-09 14:13:05 · 234 阅读 · 0 评论 -
斐波那契序列(非递归与递归)
斐波那契序列:f(0)=0; f(1)=1; f(n)=f(n-1)+f(n-2);非递归:#include <iostream>using namespace std;long long Fibo(unsigned n){ int result[]={0,1}; if(n<2) return result[n]; l...原创 2019-06-24 15:28:05 · 207 阅读 · 0 评论 -
面试题1:赋值运算符函数
如下为类型CMyString的声明,请为该类型添加赋值运算符函数。classCMyString{public:CMyString(char*pData=NULL);CMyString(constCMyString&str);~CMyString(void);private:char*m_pData;};在Java...翻译 2019-06-27 09:44:05 · 126 阅读 · 0 评论 -
数组中重复的数字
在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。(那么对应的输出是重复的数字2或者3)。class Solution {public:// Parameters:// ...翻译 2019-06-27 20:42:02 · 106 阅读 · 0 评论 -
数组中重复的数字(不改变数组)
题目:不修改数组找出重复的数字。在一个长度为n+1的数组中的所有数字都在1~n的范围内,所以数组中至少有一个数字是重复的。在不修改输入数组的情况下找出数组中任意一个重复数字。例如输入长度为8的数组{2, 3, 5, 4, 3, 2, 6, 7},则对应输出的是2或者3。由于不能修改输入的数组,我们可以创建一个长度为n+1的辅助数组,然后逐一把原数组的每个数字复制到辅助数组。如果原数组中被复制的...原创 2019-06-29 16:53:39 · 302 阅读 · 0 评论 -
二维数组中的查找
题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。class Solution {public: bool Find(int target, vector<vector<int> > array) { ...原创 2019-06-30 10:14:52 · 98 阅读 · 0 评论 -
替换空格
题目描述:请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。class Solution {public: void replaceSpace(char *str,int length) { if(str==nullptr || length<0) ...翻译 2019-07-01 10:23:39 · 104 阅读 · 0 评论 -
有两个升序排列的数组A1和A2,给A1开辟的剩余内存有足够空间容纳A1,请实现一个函数,把A2中所有数字插入到A1中,并且是按照升序排列的
#include<iostream>using namespace std; void insertArray(int A1[], int A2[], int len1, int len2){ int newIndex=((len1--)+(len2--))-1;//先给原值再自减 while (len1 >= 0 && len2 >= 0)...转载 2019-07-01 11:31:11 · 173 阅读 · 0 评论