剑指offer笔记面试题14----剪绳子】的更多相关文章

面试题 14. 剪绳子 LeetCode 题目描述 给你一根长度为 n 的绳子,请把绳子剪成 m 段(m.n 都是整数,n>1 并且 m>1),每段绳子的长度记为 k[0],k[1],···,k[m].请问 k[0] x k[1] x···x k[m] 可能的最大乘积是多少?例如,当绳子的长度是 8 时,我们把它剪成长度分别为 2.3.3 的三段,此时得到的最大乘积是 18. Java 实现 class Solution { public int integerBreak(int n) { i…
问题描述 给你一根长度为 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. 示例 1: 输入: 2 输出: 1 解释: 2 = 1 + 1, 1 × 1 = 1 示例 2: 输入: 10 输出: 36 解释: 10 = 3 + 3 + 4, 3 × 3…
问题描述 给你一根长度为 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. 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1. 示例 1: 输入: 2 输出: 1 解释: 2 = 1 + 1, 1 ×…
题目:给你一根长度为n的绳子,请把绳子剪成m段(m,n都是整数,n > 1 并且m > 1),每段绳子的长度记为k[0], k[1], ...k[m].请问k[0] x k[1] x ... x k[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2.3.3的三段,此时得到的最大乘积是18. 测试用例: 功能测试(绳子的初始长度大于5). 边界值测试(绳子的初始长度分别为0.1.2.3.4). 测试代码: void test(const char* testName,…
题目: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. 如果去掉约束条件:并保证奇数和奇数,偶数和偶数之间的相对位置不变? 思路: 如果要保证奇数和奇数,偶数和偶数之间的相对位置不变,那么需要开辟新的空间来保存奇数和偶数,方法有两种: 1.开辟一个新数组,遍历第一遍原数组,将奇数依次写入新数组,遍历第二遍原数组,将偶数依次写入新数组,返回新数组: 2.开辟两个数组,遍历一…
题目:设计一个类,我们只能生成该类的一个实例. 解法一:单线程解法 //缺点:多线程情况下,每个线程可能创建出不同的的Singleton实例 #include <iostream> using namespace std; class Singleton { public: static Singleton* getInstance() { if(m_pInstance == nullptr) { m_pInstance = new Singleton(); } return m_pInsta…
题目:如下为类型CMyString的声明,请为该类型添加赋值运算符函数. class CMyString{ public: CMyString(char* pData = nullptr); CMyString(const CMyString& str); ~CMyString(void); private: char* m_pData; }; 注意点: 是否把返回值的类型声明为该类型的引用,并在函数结束前返回实例自身的引用(*this).只有返回一个引用,才可以允许连续赋值.否则,如果函数的返…
题目一:找出数组中重复的数字.在一个长度为n的数组里的所有数字都在0~n-1的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意一个重复的数字.例如,如果输入长度为7的数组{2, 3, 1, 0, 2, 5, 3},那么对应的输出是重复的数字2或者3. 测试用例: 长度为n的数组里包含一个或多个重复的数字. 数组中不包含重复的数字. 无效输入测试用例(输入空指针:长度为n的数组中包含0~n-1之外的数字) 测试代码: void test(cha…
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 测试用例: 二维数组中包含查找的数字(查找的数字是数组中的最大值和最小值:查找的数字介于数组中的最大值和最小值之间). 二维数组中没有查找的数字(查找的数字大于数组中的最大值:查找的数字小于数组中的最小值:查找的数字在数组的最大值和最小值之间但数组中没有这个数字). 特殊输入测试(输入空指针). 测试代码: /* ***数字…
题目:请实现一个函数,把字符串中的每个空格替换成"20%".例如,输入"We are happy."则输出"We%20are%20happy.". 注意:看到这个题目,我们首先应该想到的是原来一个空格字符,替换之后变成'%'.'2'和'0'这3个字符,因此字符串会边长.如果是在原来的字符串上进行替换,就有可能覆盖修改在该字符串后面的内存.如果是创建新的字符串并在新的字符串上进行替换,那么我们可以自己分配足够多的内存.由于有两种不同的解决方案,我们…