16. 數值的整數次方(劍指 Offer 題解Java版)

2020-12-24 酷扯兒

本文轉載自【微信公眾號:五角錢的程式設計師,ID:xianglin965】經微信公眾號授權轉載,如需轉載與原文作者聯繫

文章目錄

16. 數值的整數次方題目連結題目描述解題思路實現代碼

16. 數值的整數次方

題目連結

NowCoder

題目描述

給定一個 double 類型的浮點數 base 和 int 類型的整數 exponent,求 base 的 exponent 次方。

解題思路

下面的討論中 x 代表 base,n 代表 exponent。

比如,我們求n的32次方,我們先知道n的16次方,在16次方的基礎上再平方就可以,同理,我們可以先求8次方,4次方,2次方,因此我們求32次方就變成了先求平方,在此基礎上求4次方,再求8次方,再求16次方,最後就可以求得32次方。

我們提出如下的公式:

因為(x*x)n/2可以通過遞歸求解,並且每次遞歸n都減小一半,因此整個算法的時間複雜度為O(logN)。

實現代碼

package 數值的整數次方;

/*

作者 :XiangLin

文件 :Solution.java

IDE :IntelliJ IDEA

*/

public class Solution {

public double power(double base,int exponent){

if (exponent == 0)

return 1;

if (exponent == 1)

return base;

boolean isNagivate = false;

if (exponent < 0){

isNagivate = true;

exponent = -exponent;

}

double pow = power(base * base,exponent/2);

if (exponent % 2 != 0){

pow = pow * base;

}

return isNagivate? 1 / pow : pow;

}

public static void main(String[] args) {

Solution solution = new Solution();

System.out.println(solution.power(2.2,5));

}

}

相關焦點

  • 20.表示數值的字符串(劍指 Offer 題解,面試遇到好多次)
    (包括整數和小數)。例如,字符串"+100",「5e2」,"-123",「3.1416"和」-1E-16"都表示數值。但是"12e",「1a3.14」,「1.2.3」,"±5"和"12e+4.3"都不是。
  • 18.1在 O(1) 時間內刪除鍊表節點(劍指 Offer 題解Java版)
    測試用例功能測試(多個結點鍊表,刪除頭結點、中間結點和尾結點;單個結點鍊表)特殊測試(頭結點或刪除結點為null)package 劍指offer.在O時間內刪除鍊表節點;/*作者 :XiangLin
  • 二進位中 1 的個數(劍指 Offer 題解Java版)
    二進位中 1 的個數題目連結NowCoder題目描述任意給定一個32位無符號整數n,求n的二進位表示中1的個數,比如n = 5(0101)時,返回2,n = 15(1111)時,返回4這也是一道比較經典的題目了
  • 愛眼的16次方,全飛秒SMILE幫助百萬人摘鏡
    緊接著,周行濤被卡爾蔡司告知,醫院的飛秒儀器因為手術序列碼即將到達設計數值的頂端65536,需要清零後重新安裝。德國參與設計的一位研發者表示,之所以限定在65536,是因為在2003年,囿於晶片及當時對於手術數量的考慮,將頂值設計為2的16次方,即65536,沒有想到有機器會超過這個數值。
  • 二維數組中的查找(劍指 Offer 題解Java版)
    Consider the following matrix:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],FindTarget find = new FindTarget();int[][] martix = {{1, 4, 7, 11, 15},{2, 5, 8, 12, 19},{3, 6, 9, 16
  • 剪繩子(劍指 Offer 題解Java版)
  • 重建二叉樹(劍指 Offer 題解Java版)
  • 每日一面 - 求與數字最接近的 2 的 N 次方
    為了對用戶友好,我們讓用戶設置分片數量的時候可能不限制必須是 2 的 N 次方,但是內部我們設置分片的時候,將其設置為最近用戶輸入數字的 2 的 N 次方的值即可。那麼如何計算呢?抽象為比較直觀的理解就是,找一個數字最左邊的 1 的左邊一個 1 (大於 N 的最小的 2 的 N 次方),或者是最左邊的1(小於N的最大的2的N次方),前提是這個數字本身不是2的n次方。那麼,如何找呢?
  • Redis底層數據結構——整數集合
    整數集合是什麼 Redis 中的整數集合 intset 是用來保存多個不重複的整數值且有序的集合抽象數據結構,可以保存類型為 int16-t 、int32-t 或者 int64-t 的整數值。整數集合應用場景 整數集合在 Redis 中作為了集合 Set 數據結構的底層實現之一。
  • 用兩個棧實現隊列(劍指 Offer 題解Java版)
  • 二叉樹的下一個結點(劍指 Offer 題解Java版)
  • 「武鵬有課」Python整數型變量
    這節課我們學習Python整數類型,與早期其他程式語言相比,Python對數值類型的處理更加簡單、易學。Python的整數類型支持各種整數值,不管是小的整數值還是大的整數值,Python都能夠輕鬆處理。
  • 《無雙大蛇3終極版》人物攻擊力數值溢出公式分析
    有些玩家對無雙大蛇3終極版攻擊力數值溢出不是很了解,小編這裡給大家帶來了玩家「小少年裘德」總結的無雙大蛇3終極版人物攻擊力數值溢出公式分析,詳情一起來看下文中具體的分析吧。「小少年裘德」總結的無雙大蛇3終極版人物攻擊力數值溢出公式分析,詳情一起來看下文中具體的分析吧。
  • 什麼是整數裂項,整數裂項公式方法講解
    在小學奧數中有一些非常長的整數算式,僅僅用一般的運算法則滿足不了計算要求,這時候我們要找式子中各乘式之間的規律,把各乘式裂項,前後抵消,從而簡化計算。規律和之前G老師講過的分數裂項法十分類似。原式=(1x2x3-0x1x2+2x3x4-1x2x3+3x4x5-2x3x4+……+99x100x101-98x99x100)÷3=99x100x101÷3=333300整數裂項法就是將整數乘積化成兩個乘積差的形式,這個差也不是隨便乘一個數
  • 計算機學院優秀碩士offer獲得者經驗問答
    張靜宜:一定要早做準備,在寒假期間就可以看看劍指offer等專業性書籍,同時要在LeetCode上多做題,鍛鍊自己的算法編程能力。    溫超:職業生涯的第一份工作非常重要。首先,應根據自己的實際情況做好自己的職業規劃,可以依據本人情況按照地域、行業、崗位、薪資和工作強度等方面的偏好進行選擇。其次,在確定了自己的擇業方向之後就要早做準備,凡事預則立不預則廢。
  • 素數判別和整數分解存在多項式算法
    是否存在分解大整數的多項式算法?已知道「分解整數」這個問題是一個NP完全問題,因此對上面第二個問題的討論是解決計算機科學中的難題:「NP完全問題是否一定是多項式算法可解的?」的一個突破口。因此,素數判別和大數分解對計算機科學來說也是很有價值的。我們知道整數分割和整數分解是有密切關聯的,整數分解是NP完全問題,同樣整數分割也是NP完全問題。
  • 光圈數值從源頭到實拍應用、徹底搞懂光圈
    「光圈」應該是玩攝影最先接觸的詞彙了,但我們對光圈的認識似乎還停留在光圈數值越小,光圈越大;光圈越數值越大,光圈越小的層次上。而對於整擋光圈,光圈與景深的關係,光圈與成像質量的關係似乎就不是那麼清楚了。就更別提光圈的數值是怎麼計算出來的這種看似很深奧的問題了。那麼今天,好機友攝影就跟您好好聊一聊光圈。
  • 聽書|「黑暗三部曲」——《黑暗的N次方》上架
    「黑暗三部曲」分為:《黑暗的平方》《黑暗的立方》《黑暗的N次方》三部。「黑暗三部曲」系列介紹:2049年,中國正式通過了偵探行業的相關法律,偵探成為正當職業。原錫安市(虛構)刑偵支隊隊長吳忌29歲時,在一起綁架案中因為失誤導致綁匪與人質——一名十三歲女孩宋茵同歸於盡,吳忌因此患上了神經焦慮症。他辭去職務,考了偵探執照,開設了一家偵探事務所——吳忌偵探事務所。