zoukankan      html  css  js  c++  java
  • leetcode 374. Guess Number Higher or Lower

    We are playing the Guess Game. The game is as follows:

    I pick a number from 1 to n. You have to guess which number I picked.

    Every time you guess wrong, I'll tell you whether the number is higher or lower.

    You call a pre-defined API guess(int num) which returns 3 possible results (-1, 1, or 0):

    -1 : My number is lower
     1 : My number is higher
     0 : Congrats! You got it!
    

    Example:

    n = 10, I pick 6.
    
    Return 6.
    

    # The guess API is already defined for you.
    # @param num, your guess
    # @return -1 if my number is lower, 1 if my number is higher, otherwise return 0
    # def guess(num):
    
    class Solution(object):
        def guessNumber(self, n):
            """
            :type n: int
            :rtype: int
            """
            #1 <= x <= n
            i, j = 1, n
            while i<=j:
                mid = (i+j)>>1
                r = guess(mid)
                if r == 0:
                    return mid
                elif r == 1:
                    i = mid+1
                else:
                    j = mid-1                
            #return -1?        
    

     注意:"mid = (high + low) / 2;"

     lign + low => int + int --->it may cause overflow~
    Interger scale [-2^31,2^31]

    所以一般: int mid = start+(end-start)/2;

    如果是c++代码要当心!

  • 相关阅读:
    原生态 php连接mysql
    sql查询慢 查找
    死锁查询和处理
    linq详细案例
    linq深入
    DataTable 与XML 交互
    DataTable运用
    通过反射修改已有数组的大小
    通过反射取得并修改数组信息
    通过反射机制直接操作属性
  • 原文地址:https://www.cnblogs.com/bonelee/p/9345913.html
Copyright © 2011-2022 走看看