《剑指offer》-数值的整数次方

题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

上次面试让写过这个...想要1A的话还是需要熟练些才行。这次写依然没考虑全边缘情况,不过比上次好一些。

class Solution {
public:
    double Power(double base, int exponent) {
        if(exponent==0){
            return 1;
        }
        if(exponent==1){
            return base;
        }
        if(exponent<0){
            return Power(1/base, -exponent);
        }
        if(exponent%2==1){
            return base*Power(base, exponent-1);
        }

        double t = Power(base, exponent/2);
        return t*t;

    }
};
时间: 2024-11-02 18:21:01

《剑指offer》-数值的整数次方的相关文章

《剑指offer》-统计整数二进制表示中1的个数

题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 直观思路就是把二进制表示从右往左统计1的个数.直接想到移位操作来迭代处理.坑点在于负数的移位操作会填充1.有人贴出了逻辑移位操作,但还是麻烦.直接按照int的位数,32或64,做这么多次移位操作就好了,每次移位操作累计是否为1.int的位数是32还是64,可以写一个函数来做到,而不是硬编码. class Solution { public: int NumberOf1(int n) { int cnt = 0; int

剑指Offer之数值的整数次方

题目描述: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 输入: 输入可能包含多个测试样例. 对于每个输入文件,第一行输入一个整数T,表示测试案例的数目,接下来的T行每行输入一个浮点数base和一个整数exponent,两个数中间用一个空格隔开. 输出: 对应每个测试案例, 输出一个浮点数代表答案,保留两位小数即可. 样例输入: 5 1.0 10 0.0 -5 1.0 0 1.2 5 2.0 -1 样例输出: 1.00e+00f

剑指offer之字符串转整数

题目描述: 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 输入: 输入可能包含多个测试样例. 对于每个测试案例,输入为一个合法或者非法的字符串,代表一个整数n(1<= n<=10000000). 输出: 对应每个测试案例, 若输入为一个合法的字符串(即代表一个整数),则输出这个整数. 若输入为一个非法的字符串,则输出"My God". 样例输入:5-5+8样例输出:5-58    关于这道题目,题目本身还是不错的,真正核心的代码也就那么两行,大部分代码基

《剑指offer》写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。

弱菜刷题还是刷中文题好了,没必要和英文过不去,现在的重点是基本代码能力的恢复. [题目] 剑指offer 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. [思路] 直觉想到用二进制的位运算.最后写出来是一个迭代的过程. 每次迭代先计算x和y的和但不处理进位,那么相当于做异或,得到res1 然后处理进位问题,相当于计算与运算,得到res2 那么res2左移1位,再加到res1上,则整个运算的最终结果转化为res1+(res2<<1) 因为res2做左移,总会减小到

[剑指Offer]7.从尾到头打印链表

题目1511:从尾到头打印链表 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:1082 解决:350 题目描述: 输入一个链表,从尾到头打印链表每个节点的值. 输入: 每个输入文件仅包含一组测试样例. 每一组测试案例包含多行,每行一个大于0的整数,代表一个链表的节点.第一行是链表第一个节点的值,依次类推.当输入到-1时代表链表输入完毕.-1本身不属于链表. 输出: 对应每个测试案例,以从尾到头的顺序输出链表每个节点的值,每个值占一行. 样例输入: 1 2 3 4 5 -1 样例输出

[剑指Offer] 第2章课后题详解

[剑指Offer] 第2章课后题详解 目录 剑指Offer 第2章课后题详解 目录 有序数组的插入 分析 正常解法 非主流解法 两个队列实现栈 分析 解法 2的整数次方 分析 解法 不同位数 分析 解法 有序数组的插入 本题为<剑指Offer>"面试题4:替换空格"一节中的"相关题目". 有两个排序的数组A1和A2,内存在A1的末尾有足够多的空余空间容纳A2.请实现一个函数,把A2中的所有数字插入到A1中并且所有数字是排序的. 分析 其实这道题就是实现一

[剑指Offer]10.旋转数组的最小数字

题目1386:旋转数组的最小数字 题目描述: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1. 输入: 输入可能包含多个测试样例,对于每个测试案例, 输入的第一行为一个整数n(1<= n<=1000000):代表旋转数组的元素个数. 输入的第二行包括n个整数,其中每个整数a的范围是(1<=a<=10000000). 输出:

[剑指Offer]5.二维数组中的查找

题目 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 思路 [算法系列之三十三]杨氏矩阵 代码 /*--------------------------------------- * 日期:2015-07-19 * 作者:SJF0115 * 题目: 5.二维数组中的查找 * 网址:http://www.nowcoder.com/books/coding-interviews/a

剑指offer之和为定值的两个数

题目描述: 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 输入: 每个测试案例包括两行: 第一行包含一个整数n和k,n表示数组中的元素个数,k表示两数之和.其中1 <= n <= 10^6,k为int 第二行包含n个整数,每个数组均为int类型. 输出: 对应每个测试案例,输出两个数,小的先输出.如果找不到,则输出"-1 -1" 样例输入: 6 15 1 2 4 7 11 15 样例输出:

剑指offer:顺时针打印矩阵

剑指offer上的第20题,九度OJ上测试通过. 题目描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 输入: 输入可能包含多个测试样例,对于每个测试案例, 输入的第一行包括两个整数m和n(1<=m,n<=1000):表示矩阵的维数为m行n列. 返回栏目页:http://www