zoukankan      html  css  js  c++  java
  • python_day_2:20180717

    leetcode有些题目是很简单的,一行代码敲进去就解决,早上遇到好几道这样的题目,这种就懒得记了。有些代码稍微长点的记在下面。

    可以看出今天是超额完成了30行的任务。然而暴露出算法功底太差的缺陷,后面要在这一方面多多加强。

    231. 2的幂
    给定一个整数,编写一个函数来判断它是否是 2 的幂次方。
    思路:用2**p,p累加,这样的表达式来比较与数字n的差距。如果两者可以在某个p上相等,那么n就是一个2的幂次方数。
    解答:
     1 class Solution(object):
     2     def isPowerOfTwo(self, n):
     3         """
     4         :type n: int
     5         :rtype: bool
     6         """
     7         p=0
     8         while 2**p<n:
     9             p+=1
    10         if 2**p==n:
    11             return True
    12         else:return False
     
    191. 位1的个数
    编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。
    思路:先转化为二进制数,再数里面的1的个数
    解答:
    class Solution(object):
        def hammingWeight(self, n):
            """
            :type n: int
            :rtype: int
            """
            count=0
            for i in range(len(bin(n))):
                if bin(n)[i]=='1':
                    count+=1
            return count
    357. 计算各个位数不同的数字个数
    给定一个非负整数 n,计算各位数字都不同的数字 x 的个数,其中 0 ≤ x < 10n。
    思路:应该是先设计个函数,用来判断一个数是不是各位都不相同,然后在遍历中调用这个判断函数,同时计数。思路应该是对的,但是算法不高明,超时了,没有通过。后面要好好加强自己算法方面的知识。
    解答:耗时过长,算法不行
     1 class Solution(object):
     2     def countNumbersWithUniqueDigits(self, n):
     3         """
     4         :type n: int
     5         :rtype: int
     6         """
     7         count = 0
     8         for i in range(1,10**n):
     9             if self.judge(i):
    10                 count+=1
    11         return 10**n-count
    12     def judge(self,n):
    13         strn=str(n)
    14         recordn=[]
    15         for i in range( len(strn)):
    16             if strn[i] not in recordn:
    17                 recordn.append(strn[i])
    18             else:
    19                 return True    
    20         return False
    9. 回文数
    判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
    思路:创造一个反写的字符串,判断两个是否相同。
    解答:
    1 class Solution(object):
    2     def isPalindrome(self, x):
    3         read=str(x)
    4         inverse=''
    5         for k in range(len(read)):
    6             inverse+=read[-1-k]
    7         if inverse == read:
    8             return True
    9         else:return False
    400. 第N个数字
    在无限的整数序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...中找到第 n 个数字。
    注意:
    n 是正数且在32为整形范围内 ( n < 231)。
    思路:想到创造一个拼接的字符串,不断在后面加上新项目,直到字符串长度覆盖了我们要关心的n。
    问题:还是算法问题,有几条测试耗时太久,估计里面做了太多浪费时间的事情。
    解答:(待优化)
    1 class Solution(object):
    2     def findNthDigit(self, n):
    3         numberlist=''
    4         number=1
    5         while len(numberlist)<n:
    6             numberlist += str(number)
    7             number+=1
    8         return int(numberlist[n-1])
     
  • 相关阅读:
    TRUNCATE TABLE 删除表中的所有行,而不记录单个行删除操作
    血腥!实况转播SQL注入全过程,让你知道危害有多大。
    DB2隔离级别设置
    使用解释工具分析SQL语句
    DB2的七种武器
    db2精华文档和论坛链接
    “饮水机”:形象比喻 深入浅出理解RAID
    DB2 数据库恢复测试
    IBM DB2 日常维护汇总
    镜像分割与高可用性灾难恢复
  • 原文地址:https://www.cnblogs.com/codeinpy/p/9322925.html
Copyright © 2011-2022 走看看