当前位置:
首页 > Python基础教程 >
-
python基础教程之leepcode作业解析-5-21
你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。
你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。
示例:
输入: 4
输出: false
解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛;
因为无论你拿走 1 块、2 块 还是 3 块石头,最后一块石头总是会被你的朋友拿走。
解答:这道题首先找规律,在我拿石头之前,如果石头书为4时,我就必输;如果为5,6,7时,我就必赢;如果是8时,我必输;9,10,11时,我又必赢;12时,我又输;因此得出只要是4的整数倍,那我就必输,否则就必赢。
class Solution(object):
def canWinNim(self, n):
"""
:type n: int
:rtype: bool
"""
if n>0 and n<4:
return (True)
elif n % 4 == 0:
return (False)
else:
return (True)
26、3的幂
给定一个整数,写一个函数来判断它是否是 3 的幂次方。
示例 1:
输入: 27
输出: true
示例 2:
输入: 0
输出: false
示例 3:
输入: 9
输出: true
示例 4:
输入: 45
输出: false
解答:
class Solution(object):
def isPowerOfThree(self, n):
"""
:type n: int
:rtype: bool
"""
if n == 1:
return True
elif n<3 or n %3 !=0 :
return False
#当n能整除3后,在进行取整和取余判断,如果条件不满足,继续循环。
while True:
n = n // 3
if n ==1:
return True
if n % 3 != 0:
return False
27、 4 的幂
给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方。
示例 1:
输入: 16
输出: true
示例 2:
输入: 5
输出: false
解答:
class Solution(object):
def isPowerOfFour(self, num):
"""
:type num: int
:rtype: bool
"""
if num == 1:
return True
if num < 4 or num%4 != 0:
return False
while True:
num = num //4
if num == 1:
return True
if num%4 != 0:
return False
28、两个数组的交集
给定两个数组,编写一个函数来计算它们的交集。
示例 1:
输入: nums1 = [1,2,2,1], nums2 = [2,2]
输出: [2]
示例 2:
输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出: [9,4]
解答:第一次碰到送分题,不容易啊!!
class Solution(object):
def intersection(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: List[int]
"""
# nums1_set =set(nums1)
# nums2_set = set(nums2)
return(list(set(nums1) & set(nums2)))
29、字符串中的第一个唯一字符
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
案例:
s = "leetcode"
返回 0.
s = "loveleetcode",
返回 2.
注意事项:您可以假定该字符串只包含小写字母。
解答:利用字典能存储key的value值,我们可以标记,字符串出现的第一次标记为1,如果出现第二次则+1,这样,第一个value等于1的key就是第一个不重复的字符。
class Solution(object):
def firstUniqChar(self, s):
"""
:type s: str
:rtype: int
"""
s1={}
for a in s:
if a not in s1:
s1[a] = 1
else:
s1[a] +=1
for j in range(len(s)):
if s[j] in s1 and s1[s[j]] == 1: #如果列表s中索引值j对应的字符在字典s1中,并且该字符对应的value值为1,则第一个不重复的字符就是该字符;如果不是则继续循环。
return j
return -1
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式