Solve in Python:
Given a positive integer num, write a function which returns True if num is a perfect square else False.


Note: Do not use any built-in library function such as sqrt.


Example 1:

Input: 16
Returns: True



Example 2:

Input: 14
Returns: False



Credits:Special thanks to @elmirap for adding this problem and creating all test cases.
class Solution:
     def isPerfectSquare(self, num):
         """
         :type num: int
         :rtype: bool
         """
         p, r = 1, (num>>1) + 1
         while p <= r:
             mid = (p + r) >> 1
             sq = mid*mid
             if sq == num:
                 return True
             if sq >= num:
                 r = mid - 1
             if sq <= num:
                 p = mid + 1
         return False