iT邦幫忙

2025 iThome 鐵人賽

DAY 14
0
生成式 AI

Chatting with ChatGPT——一天學習一題Leetcode系列 第 14

快來不及之LeetCode 69. Sqrt(x)

  • 分享至 

  • xImage
  •  

今日之題目大意:給你一個非負整數 x,請你計算並回傳 x 的平方根(只取整數部分,捨去小數),而且不能用任何內建函數(像 Math.sqrt)。

範例
輸入:x = 4
輸出:2

輸入:x = 8
輸出:2(因為真實平方根是 2.828...,要捨去小數,只取整數 2)

class Solution {
    public int mySqrt(int x) {
        if (x < 2) return x; //如果 x 是 0 或 1,直接回傳 x

        int left = 1, right = x / 2; //因為一個數的平方根不可能大於它的一半
        int ans = 0; //用 ans 記錄「目前找到的最大合法平方根候選值」

        while (left <= right) {
            int mid = left + (right - left) / 2; //取中間值 mid,這樣寫是為了避免 (left + right) / 2 可能造成整數溢位(overflow)
            long square = (long) mid * mid;

            if (square == x) {
                return mid;
            } else if (square < x) {
                ans = mid;
                left = mid + 1;
            } else {
                right = mid - 1;
            }
        }

        return ans;
    }
}

上一篇
開心星期六-121. Best Time to Buy and Sell Stock
系列文
Chatting with ChatGPT——一天學習一題Leetcode14
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言