【c++leetcode】69. Sqrt(x)

問題入口

二分搜索

最困難的是能否意識到用二分搜索法解題。

算術平方根的區間在[1, x] 。代碼如下:

class Solution {
public:int mySqrt(int x) {if (x == 1 || x == 0){return x;}int64_t start = 1;int64_t end = x;while (start <= x){int64_t mid = start + (end - start) / 2;if (mid * mid  < x){if ((mid + 1) * (mid + 1) > x)return mid;start = mid + 1;}else if(mid * mid  > x){if ((mid - 1) * (mid - 1) < x)return mid - 1;end = mid - 1;}elsereturn mid;}return 0;}
};

關于時間復雜度

以中間的元素為界,如果大于中間元素,范圍限定在右半邊,如果小于中間元素,范圍限定在左半邊。假設數組元素數為n,范圍依次是n\rightarrow \frac{n}{2}\rightarrow \frac{n}{4}\rightarrow ...\rightarrow 1。假設通過k次找到指定元素,?\frac{n}{2^{k}} = 1, k=log_{2}n。時間復雜度為O(logn)

溢出

題目要求0<=x<=2^{31}-1=2147483647

#include <cstdint>
#include <iostream>int main() {int8_t a = INT8_MAX;int16_t b = INT16_MAX;int32_t c = INT32_MAX;int64_t d = INT64_MAX;std::cout << "Maximum value of int8_t: " << +a << std::endl;std::cout << "Maximum value of int16_t: " << b << std::endl;std::cout << "Maximum value of int32_t: " << c << std::endl;std::cout << "Maximum value of int64_t: " << d << std::endl;return 0;
}

假設 mid * mid(中間元素*中間元素) > 214783647,就會引發整數溢出。

所以 這里設置的數據類型是int64_t

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/18531.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/18531.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/18531.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

開源模型應用落地-Gradio正確集成Fastapi-助力模型交互-實踐篇(二)

一、前言 Gradio提供了直觀的用戶界面,當與Fastapi結合后,用戶可以通過界面輕松地與模型進行交互,上傳數據、獲取推理結果等,使得交互性增強,提升了用戶體驗。 在開源大語言模型遍地開花的時代,正確的使用Gradio和Fastapi,通過兩者的集成,使得模型的部署和使用過程更加…

以果決其行,只為文化的傳承

從他們每一個人的身上&#xff0c;我們看到傳神的東西&#xff0c;就是他們都能用結果&#xff0c;去指引自己前進的方向&#xff0c;這正是我要解讀倪海廈老師的原因&#xff0c;看倪海廈2012年已經去世&#xff0c;到現在已經十幾年時間了&#xff0c;但是我們看現在自學中醫…

【Pandas】深入解析`pd.to_sql()`函數

【Pandas】深入解析pd.to_sql()函數 &#x1f308; 歡迎蒞臨我的個人主頁&#x1f448;這里是我深耕Python編程、機器學習和自然語言處理&#xff08;NLP&#xff09;領域&#xff0c;并樂于分享知識與經驗的小天地&#xff01;&#x1f387; &#x1f393; 博主簡介&#xff1…

2024年第六屆中青杯數學建模競賽淺析

獲取比賽資料&#xff0c;請關注gzh“小何數模”&#xff01; 本次中青杯數學建模的賽題已正式出爐&#xff0c;無論是賽題難度還是認可度&#xff0c;該比賽都是僅次于數模國賽的獨一檔&#xff0c;可以用于國賽前的練手訓練。考慮到大家解題實屬不易&#xff0c;為了幫助大家…

JavaSE:StringBuilder和StringBuffer類

1、引言 在上一篇文章中&#xff0c;我們理解了字符串的常用方法&#xff0c;細心的同學大概已經發現&#xff0c;不管是將字符串中的字符轉變為大寫或小寫&#xff0c;或是完成字符串的替換&#xff0c;又或是去除空白字符等等&#xff0c;只要涉及到字符串的修改&#xff0c…

【PB案例學習筆記】-10 進度條使用

寫在前面 這是PB案例學習筆記系列文章的第10篇&#xff0c;該系列文章適合具有一定PB基礎的讀者。 通過一個個由淺入深的編程實戰案例學習&#xff0c;提高編程技巧&#xff0c;以保證小伙伴們能應付公司的各種開發需求。 文章中設計到的源碼&#xff0c;小凡都上傳到了gite…

Java用反射reflect來實例化對象: class.getDeclaredConstructor().newInstance()

Java用反射reflect來實例化對象: class.getDeclaredConstructor().newInstance() 從java9開始, class.newInstance()已過時, 被加上Deprecated強烈反對注解 SuppressWarnings("removal")CallerSensitiveDeprecated(since"9")public T newInstance()throws …

防止自動化攻擊的最佳實踐

防止自動化攻擊的最佳實踐 在當今的網絡安全環境中&#xff0c;保護用戶賬戶免受自動化攻擊已成為每個網站和應用程序的重要任務。攻擊者可以利用多種不同類型的自動化攻擊來嘗試破壞用戶賬戶。本文將詳細介紹常見的攻擊類型及其防御機制&#xff0c;幫助您更好地保護用戶賬戶…

C# ManualResetEvent的用法

在C#中&#xff0c;ManualResetEvent類是一個同步基元&#xff0c;用于控制多個線程的執行順序。下面是一些ManualResetEvent類的常見用法&#xff1a; 等待一個事件的發生&#xff1a;可以使用ManualResetEvent的WaitOne方法來等待事件的發生。當事件被觸發時&#xff0c;Wait…

adb 連接機頂盒命令

抓機頂盒日志的方法&#xff0c;使用此命令進行抓日志&#xff0c;個別無法抓日志的盒子可以使用此方法 1、安卓9.0版本查詢命令 ps -ef |grep com.cm.webos.iptv 2、安卓4.4版本查詢命令 ps |grep com.cm.webos.iptv 3、查詢順序&#xff1a;首先進入shell下進行操作 adb she…

C++青少年簡明教程:for循環語句

C青少年簡明教程&#xff1a;for循環語句 C的for循環語句是一種迭代控制語句&#xff0c;用于重復執行一段代碼。 語法格式&#xff1a; for(表達式1&#xff1b;表達式2&#xff1b;表達式3) 循環體 for循環語句執行流程圖&#xff1a; 不太好理解&#xff0c;請看下圖&am…

VSCode配置Lua5.4安裝

參考&#xff1a;VSCode 配置 Lua 開發環境(清晰明了)_lua vscode-CSDN博客 1.下載 Lua Binaries Download (sourceforge.net) 2.配置環境變量 解壓放到某文件夾&#xff1a; 環境變量&#xff1a; 3.VSCode安裝插件 4.配置 5.測試

Python | Leetcode Python題解之第116題填充每個節點的下一個右側節點指針

題目&#xff1a; 題解&#xff1a; class Solution:def connect(self, root: Node) -> Node:if not root:return root# 從根節點開始leftmost rootwhile leftmost.left:# 遍歷這一層節點組織成的鏈表&#xff0c;為下一層的節點更新 next 指針head leftmostwhile head:#…

快解析動態域名解析,實現外網訪問內網數據庫

今天跟大家分享一下如何借助快解析動態域名解析&#xff0c;在兩種特定網絡環境下&#xff0c;實現外網訪問內網mysql數據庫。 第1種網絡環境&#xff1a;路由器分配的是動態公網IP&#xff0c;且有路由器登錄管理權限。如何實現外網訪問內網mysql數據庫&#xff1f; 針對這種…

繼承與Object

一.繼承 Java語言的繼承&#xff1a;單繼承 1.類和類之間的關系 (1)組合關系 公司和員工&#xff0c;學校和學生 (2)繼承關系 學生和人 二.Object類 public class Object {private static native void registerNatives();static {registerNatives();} 1.finalize() 對象…

FPGA時鐘:驅動數字邏輯的核心

一、引言 在FPGA&#xff08;現場可編程門陣列&#xff09;設計中&#xff0c;時鐘信號是不可或缺的關鍵要素。時鐘信號作為時序邏輯的心跳&#xff0c;推動著FPGA內部各個存儲單元的數據流轉。無論是實現復雜的邏輯運算還是處理高速數據流&#xff0c;都需要精確的時鐘信號來保…

Vanna使用ollama分析本地MySQL數據庫

上一章節中已經實現了vanna的本地運行&#xff0c;但是大模型和數據庫都還是遠程的&#xff0c;因為也就沒辦法去訓練&#xff0c;這節一起來實現vanna分析本地mysql數據庫&#xff0c;因為要使用本地大模型&#xff0c;所以開始之前需要給本地安裝好大模型&#xff0c;我這里用…

WPF/C#:理解與實現WPF中的MVVM模式

MVVM模式的介紹 MVVM&#xff08;Model-View-ViewModel&#xff09;是一種設計模式&#xff0c;特別適用于WPF&#xff08;Windows Presentation Foundation&#xff09;等XAML-based的應用程序開發。MVVM模式主要包含三個部分&#xff1a;Model&#xff08;模型&#xff09;、…

期權具體怎么交易詳細的操作流程?

期權就是股票&#xff0c;唯一區別標的物上證指數&#xff0c;會看大盤吧&#xff0c;交易兩個方向認購做多&#xff0c;認沽做空&#xff0c;雙向t0交易&#xff0c;期權具體交易流程可以理解選擇方向多和空&#xff0c;選開倉的合約&#xff0c;買入開倉和平倉沒了&#xff0…

【Spring Cloud】API網關

目錄 什么是API網關為什么需要API網關前言問題列表 API網關解決了什么問題常見的網關解決方案NginxLuaSpring Cloud Netflix ZuulSpringCloud Zuul的IO模型弊端 Spring Cloud Gateway 第二代網關——GatewayGateway的特征Spring Cloud Gateway的處理流程Spring Cloud Gateway的…