Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで最も近い平方根を推測する


非負の数nがあるとすると、r * r =nとなるような数rを見つけ、最も近い整数に切り捨てる必要があります。組み込みの平方根関数を使用せずにこの問題を解決する必要があります。

したがって、入力が1025のような場合、出力は32になります。

これを解決するには、次の手順に従います-

  • n <=1の場合、
    • return n
  • 開始:=1、終了:=n
  • 開始<終了中、実行
    • mid:=start + end / 2
    • mid * mid <=nの場合、
      • start:=mid + 1
    • それ以外の場合、
      • end:=mid
  • リターンスタート-1

理解を深めるために、次の実装を見てみましょう-

class Solution:
   def solve(self, n):
      if n <= 1:
         return n
         start, end = 1, n
         while start < end:
            mid = start + end >> 1
            if mid * mid <= n:
               start = mid + 1
            else:
               end = mid
         return start - 1
ob = Solution()
print(ob.solve(1025))

入力

1025

出力

32

  1. Pythonで二分木を反転する

    二分木があるとします。私たちの仕事は、逆二分木を作成することです。したがって、ツリーが以下のようになっている場合- 反転したツリーは次のようになります これを解決するために、再帰的アプローチを使用します ルートがnullの場合は、戻ります 左右のポインタを入れ替える 左のサブツリーと右のサブツリーを再帰的に解決します 例(Python) 理解を深めるために、次の実装を見てみましょう- class TreeNode:    def __init__(self, data, left = None, right = None):    

  2. Pythonでのパスの合計

    1つのツリーと合計があるとします。そのパスをたどると、与えられた合計と一致する合計が得られるように、1つのパスを見つける必要があります。ツリーが[0、-3,9、-10、null、5]のようで、合計が14であるとすると、パス0→9→5があります。 これを解決するために、次の手順に従います。 ルートがnullの場合は、Falseを返します 左右のサブツリーが空の場合、sum – root.val =0の場合はtrueを返し、それ以外の場合はfalseを返します 戻り値solve(root.left、sum – root.val)またはsolve(root.right、su