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

    374. Guess Number Higher or Lower

    Easy

    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 (-11, or 0):

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

    Example :

    Input: n = 10, pick = 6
    Output: 6
    package leetcode.easy;
    /* The guess API is defined in the parent class GuessGame.
    @param num, your guess
    @return -1 if my number is lower, 1 if my number is higher, otherwise return 0
       int guess(int num); */
    
    class GuessGame {
    	public int guess(int num) {
    		if (6 > num) {
    			return -1;
    		} else if (6 == num) {
    			return 0;
    		} else {
    			return 1;
    		}
    	}
    }
    
    public class GuessNumberHigherOrLower extends GuessGame {
    	public int guessNumber1(int n) {
    		for (int i = 1; i < n; i++) {
    			if (guess(i) == 0) {
    				return i;
    			}
    		}
    		return n;
    	}
    
    	public int guessNumber2(int n) {
    		int low = 1;
    		int high = n;
    		while (low <= high) {
    			int mid = low + (high - low) / 2;
    			int res = guess(mid);
    			if (res == 0) {
    				return mid;
    			} else if (res < 0) {
    				high = mid - 1;
    			} else {
    				low = mid + 1;
    			}
    		}
    		return -1;
    	}
    
    	public int guessNumber3(int n) {
    		int low = 1;
    		int high = n;
    		while (low <= high) {
    			int mid1 = low + (high - low) / 3;
    			int mid2 = high - (high - low) / 3;
    			int res1 = guess(mid1);
    			int res2 = guess(mid2);
    			if (res1 == 0) {
    				return mid1;
    			}
    			if (res2 == 0) {
    				return mid2;
    			} else if (res1 < 0) {
    				high = mid1 - 1;
    			} else if (res2 > 0) {
    				low = mid2 + 1;
    			} else {
    				low = mid1 + 1;
    				high = mid2 - 1;
    			}
    		}
    		return -1;
    	}
    
    	@org.junit.Test
    	public void test() {
    		GuessNumberHigherOrLower guessNumberHigherOrLower = new GuessNumberHigherOrLower();
    		System.out.println(guessNumberHigherOrLower.guessNumber1(10));
    		System.out.println(guessNumberHigherOrLower.guessNumber2(10));
    		System.out.println(guessNumberHigherOrLower.guessNumber3(10));
    	}
    }
    
  • 相关阅读:
    There is an overlap in the region chain修复
    There is an overlap in the region chain
    region xx not deployed on any region server
    python 中的re模块,正则表达式
    TCP粘包问题解析与解决
    yield from
    Git push提交时报错Permission denied(publickey)...Please make sure you have the correct access rights and the repository exists.
    mysql 中Varchar 与char的区别
    Mysql 字符集及排序规则
    请实现一个装饰器,限制该函数被调用的频率,如10秒一次
  • 原文地址:https://www.cnblogs.com/denggelin/p/11854459.html
Copyright © 2011-2022 走看看