leetcode题库中共有350道简单题目。
本文记录已解决的题目和代码。
本文中的序号是leetcode题目中的真实序号。

文章目录

  • 172 阶乘后的零
    • 描述
    • 代码
    • 官方解答
  • 189 旋转数组
    • 描述
    • 代码
    • 大神代码
  • 190 颠倒二进制位
    • 描述
    • 代码
    • 大神代码
  • 191 位1的个数
    • 描述
    • 代码
    • 大神代码-多种解法
  • 198 打家劫舍
    • 描述
    • 代码-动态规划
    • 详解
  • 202 快乐数
    • 描述
    • 代码
    • 大神代码

172 阶乘后的零

描述

给定一个整数 n,返回 n! 结果尾数中零的数量。
示例 1:
输入: 3
输出: 0
解释: 3! = 6, 尾数中没有零。

示例 2:
输入: 5
输出: 1
解释: 5! = 120, 尾数中有 1 个零.
说明: 你算法的时间复杂度应为 O(log n) 。

代码


class Solution:def trailingZeroes(self, n: int) -> int:i,zero_count = 1,0temp = pow(5,1)while temp <= n:zero_count += n // tempi += 1temp = pow(5,i)return zero_count# count = 0# while n >= 5:#     count += n // 5#     n //= 5# return count

官方解答

https://leetcode-cn.com/problems/factorial-trailing-zeroes/solution/q172-factorial-trailing-zeroes-by-ronhou/

189 旋转数组

描述

给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。
示例 1:
输入: [1,2,3,4,5,6,7] 和 k = 3
输出: [5,6,7,1,2,3,4]

示例 2:
输入: [-1,-100,3,99] 和 k = 2
输出: [3,99,-1,-100]
说明:
尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。
要求使用空间复杂度为 O(1) 的 原地 算法。

代码

class Solution:def rotate(self, nums: List[int], k: int) -> None:"""Do not return anything, modify nums in-place instead."""for i in range(k):nums.insert(0,nums.pop())   # insert方法耗时O(n^2)

大神代码

# O(n)算法
# 作者:zhu_shi_fu
# 链接:https://leetcode-cn.com/problems/rotate-array/solution/san-ci-fan-zhuan-fu-yi-xie-pythonicde-jie-fa-pytho/'''
三次反转
对于[1,2,3,4,5,6,7],
根据k=k%n,将数组分为两段:第一段,对应数组下标范围[0,n-k-1][0,n−k−1]段,即[1,2,3,4][1,2,3,4]
第二段,对应数组下标范围[n-k,n-1][n−k,n−1],即[5,6,7][5,6,7]
分为三步:反转第一段,[4,3,2,1,5,6,7]
反转第二段,[4,3,2,1,7,6,5]
反转整体,[5,6,7,1,2,3,4]
'''
# list切片方法
class Solution:def rotate(self, nums: List[int], k: int) -> None:"""Do not return anything, modify nums in-place instead."""n = len(nums)k %= nnums[:] = nums[::-1]nums[:k] = nums[:k][::-1]nums[k:] = nums[k:][::-1]
# list切片简单方法
class Solution:def rotate(self, nums: List[int], k: int) -> None:n=len(nums)k%=nnums[:]=nums[n-k:]+nums[:n-k]

190 颠倒二进制位

描述

颠倒给定的 32 位无符号整数的二进制位。
示例 1:

输入: 00000010100101000001111010011100
输出: 00111001011110000010100101000000
解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596,
因此返回 964176192,其二进制表示形式为 00111001011110000010100101000000。
示例 2:
输入:11111111111111111111111111111101
输出:10111111111111111111111111111111
解释:输入的二进制串 11111111111111111111111111111101 表示无符号整数 4294967293,
因此返回 3221225471 其二进制表示形式为 10101111110010110010011101101001。
提示:
请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。
在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在上面的 示例 2 中,输入表示有符号整数 -3,输出表示有符号整数 -1073741825

代码

class Solution:# @param n, an integer# @return an integerdef reverseBits(self, n):n = bin(n)[2:]return int(n[::-1]+'0'*(32 - len(n)),2)

大神代码

作者:jalan
链接:https://leetcode-cn.com/problems/reverse-bits/solution/python-de-liang-chong-jie-fa-by-jalan/

class Solution:# @param n, an integer# @return an integerdef reverseBits(self, n):return int(bin(n)[2:].zfill(32)[::-1], base=2)
# zfill方法,str.zfill(width),返回指定长度的字符串,原字符串右对齐,前面填充0
class Solution:# @param n, an integer# @return an integerdef reverseBits(self, n):res = 0count = 32while count:res <<= 1# 取出 n 的最低位数加到 res 中res += n&1n >>= 1count -= 1return int(bin(res), 2)

191 位1的个数

描述

编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。
示例 1:

输入:00000000000000000000000000001011
输出:3
解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 ‘1’。
示例 2:

输入:00000000000000000000000010000000
输出:1
解释:输入的二进制串 00000000000000000000000010000000 中,共有一位为 ‘1’。
示例 3:

输入:11111111111111111111111111111101
输出:31
解释:输入的二进制串 11111111111111111111111111111101 中,共有 31 位为 ‘1’。

代码

class Solution(object):def hammingWeight(self, n):""":type n: int:rtype: int"""one_count = 0for i in range(32):if n&1:one_count += 1n >>= 1return one_count
# 优化算法
# https://leetcode-cn.com/u/xiao-xue-66/
class Solution(object):def hammingWeight(self, n):""":type n: int:rtype: int"""result = 0while n != 0:result += 1n &= (n-1)      # 可以将二进制最后一位变为0return result

大神代码-多种解法

作者:jalan
链接:https://leetcode-cn.com/problems/number-of-1-bits/solution/python-de-si-chong-xie-fa-by-jalan/

class Solution(object):def hammingWeight(self, n):""":type n: int:rtype: int"""return bin(n).count('1')
class Solution(object):def hammingWeight(self, n):""":type n: int:rtype: int"""count = 0while n:count += n&1n >>= 1return count

198 打家劫舍

描述

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。
给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。
示例 1:

输入: [1,2,3,1]
输出: 4
解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。
偷窃到的最高金额 = 1 + 3 = 4 。
示例 2:

输入: [2,7,9,3,1]
输出: 12
解释: 偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。
偷窃到的最高金额 = 2 + 9 + 1 = 12 。

代码-动态规划

class Solution:def rob(self, nums: List[int]) -> int:pre_max = 0cur_max = 0for n in nums:temp = cur_maxcur_max = max(pre_max + n, cur_max)pre_max = tempreturn cur_max

详解

https://leetcode-cn.com/problems/house-robber/solution/da-jia-jie-she-by-leetcode/

202 快乐数

描述

编写一个算法来判断一个数是不是“快乐数”。
一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,
然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。
示例:

输入: 19
输出: true
解释:
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1

代码

class Solution:def isHappy(self, n: int) -> bool:n_list = []while n not in n_list:n_list.append(n)sum_n = sum([int(i)**2 for i in str(n)])n = sum_nif n == 1:return Truereturn False

大神代码

作者:000sheldon
链接:https://leetcode-cn.com/problems/happy-number/solution/python-jie-fa-by-000sheldon-2/

while True:n = sum([int(i)**2 for i in str(n)])if n == 4:return Falseif n == 1:return True

LeetCode简单题目(#172 #189 #190 #191 #198 #202)-6道(序列、数字)相关推荐

  1. LeetCode简单题目(#203 #204 # #205 #206 #217 #219)-6道(序列、数字)

    leetcode题库中共有350道简单题目. 本文记录已解决的题目和代码. 本文中的序号是leetcode题目中的真实序号. 文章目录 203 移除链表元素 描述 代码 大神代码-递归 204 计数质 ...

  2. LeetCode简单题目(#27 #28 #35 #38)-2019.10.23-4道

    leetcode题库中共有350道简单题目. 本文记录已解决的题目和代码. 本文中的序号是leetcode题目中的真实序号. 文章目录 27 移除元素 描述 代码 28 实现 strStr() 描述 ...

  3. LeetCode简单题目(#263 #268 #278 #283 #290)-5道(数字、字符串)

    leetcode题库中共有350道简单题目. 本文记录已解决的题目和代码. 本文中的序号是leetcode题目中的真实序号. 文章目录 263 丑数 描述 代码 大神代码 268 缺失数字 描述 代码 ...

  4. LeetCode简单题目(#235 #237 #242 #257 #258)-5道(树、数字、字符串)

    leetcode题库中共有350道简单题目. 本文记录已解决的题目和代码. 本文中的序号是leetcode题目中的真实序号. 文章目录 235 二叉搜索树的最近公共祖先 描述 代码 237 删除链表中 ...

  5. LeetCode简单题目(#225 #226 #231 #232 #234)-5道(栈、队列、树、数字)

    leetcode题库中共有350道简单题目. 本文记录已解决的题目和代码. 本文中的序号是leetcode题目中的真实序号. 文章目录 225 用队列实现栈 描述 代码 226 翻转二叉树 描述 代码 ...

  6. LeetCode简单题目(#160 #167 #168 #169 #171)-5道(序列、数字)

    leetcode题库中共有350道简单题目. 本文记录已解决的题目和代码. 本文中的序号是leetcode题目中的真实序号. 文章目录 160 相交链表 描述 代码 大神代码-双指针法 大神代码-哈希 ...

  7. LeetCode简单题目(#118 #119 #121 #122 #125 #136 #141 #155)-8道

    leetcode题库中共有350道简单题目. 本文记录已解决的题目和代码. 本文中的序号是leetcode题目中的真实序号. 文章目录 118 杨辉三角 描述 代码 官方解答 119 杨辉三角II 描 ...

  8. LeetCode简单题目(二叉树相关)(#100 #101 #104 #107 #108 #110 #111 #112)-8道

    leetcode题库中共有350道简单题目. 本文记录已解决的题目和代码. 本文中的序号是leetcode题目中的真实序号. 文章目录 100 相同的树 描述 代码 更好的解法 101 对称二叉树 描 ...

  9. LeetCode简单题目(#53 #58 #66 #67 #69 #70 #83 #88)-8道

    leetcode题库中共有350道简单题目. 本文记录已解决的题目和代码. 本文中的序号是leetcode题目中的真实序号. 文章目录 53 最大子序和 描述 代码 大佬代码 58 最后一个单词的长度 ...

最新文章

  1. HTML5学习之二:HTML5中的表单2
  2. 美国星巴克肯德基明年将支持Apple Pay
  3. tfrecord文件生成与读取
  4. Python词云学习之旅
  5. Forrester 2011年安全策略建议
  6. 编译 php mysql 依赖包_MySQL 5.5.15源码包编译安装
  7. asp.net本质论——HttpModule
  8. Zeppelin 可视化操作spark sql
  9. 努比亚Z40 Pro定档2月25日:业界唯一定制35mm主摄+首发索尼IMX787
  10. mongodb 集群shard_mongodb集群构建方案(二)
  11. ROI区域提取(图上直接利用鼠标事件提取坐标点,可视化显示)
  12. CACTI 仙人掌监控平台
  13. 深入理解linux网络技术内幕读书笔记(十)--帧的接收
  14. linux编译fdk aac,编译x264和fdk-aac
  15. U盘可见空间只有200M的解决方法
  16. dvb s2标准下载_ETSI EN 302 307-1
  17. IP技术 -- 6 Telemetry
  18. Django快速上手
  19. web SEO简单优化
  20. c语言贾宗璞答案,c语言答案 贾宗璞、许合利

热门文章

  1. 电脑经常死机是什么原因
  2. char*和CString转换
  3. scrapy爬取动态网页_scrapy_splash 爬取 js 加载网页初体验
  4. 新开普自助查询 单点登录 php,综合教务管理系统,高校教务管理系统,教务管理系统 - 新开普(NewCapec)...
  5. 线索二叉树是一种什么结构_技术面试之常用的数据结构
  6. python如何读取文件建立字典_如何使用python从文本文件创建字典
  7. Qt窗口部件——对话框QDialog
  8. 转:Nginx 性能优化有这篇就够了!
  9. Spark Master资源调度--worker向master注册
  10. 活动目录操作主机(FSMO)角色详解