当前位置:网站首页>lc marathon 8.2
lc marathon 8.2
2022-08-03 03:30:00 【云霞川】
文章目录
622. 设计循环队列
循环队列,若需要存k个元素,则申请k+1个空间,并留出最后一位。
front 队头只删除元素
rear 队尾只插入元素
front 指向队头第一个元素
rear 指向队尾第一个空的位置(最后一个元素的后一位)
front==rear 队空
front==(rear+1)%(k+1) 队满
删除 需检查是否队空
插入 需检查是否队满
class MyCircularQueue:
def __init__(self, k: int):
self.front=0
self.rear=0
self.ls=[0 for i in range(k+1)]
self.maxlen=k+1
def enQueue(self, value: int) -> bool:
if self.front%self.maxlen==(self.rear+1)%self.maxlen:
return False
self.ls[self.rear%self.maxlen]=value
self.rear=(self.rear+1)%self.maxlen
return True
def deQueue(self) -> bool:
if self.front==self.rear:
return False
self.front=(self.front+1)%self.maxlen
return True
def Front(self) -> int:
if self.rear==self.front:
return -1
return self.ls[self.front%self.maxlen]
def Rear(self) -> int:
if self.rear==self.front:
return -1
return self.ls[(self.rear-1)%self.maxlen]
def isEmpty(self) -> bool:
if self.front==self.rear:
return True
else:
return False
def isFull(self) -> bool:
if self.front%self.maxlen==(self.rear+1)%self.maxlen:
return True
else:
return False
222. 完全二叉树的节点个数
利用完全二叉树的性质,满二叉树的节点数==2^height-1
因此我们先检查是不是满二叉树 ,是的话可以直接算
不是,则再分别递归左右节点
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def countNodes(self, root: Optional[TreeNode]) -> int:
if root==None:
return 0
left=root.left
ld=1
right=root.right
rd=1
while(left):
ld=ld+1
left=left.left
while(right):
rd=rd+1
right=right.right
if ld==rd:
return pow(2,ld)-1
return 1+self.countNodes(root.left)+self.countNodes(root.right)
357. 统计各位数字都不同的数字个数
get1 求n的阶乘
get2 求n位的时候,有几种
用排列组合的知识
n=1:0,1,2,3…9 共有10种
dic={
}
class Solution:
def countNumbersWithUniqueDigits(self, n: int) -> int:
if n>10:
return 0
if n==0:
return 1
s=0
for i in range(1,n+1):
s+=get2(i)
return int(s)
def get2(n):
# 全部不相同
# n>10:return 0
# n=10:return A{10}{10}-A{9}{9}
# n<10:
# 首先从10个数字中 挑选n个 C{n}{10}
# 然后对其排序 A{n}{n}
# 最终结果减去 0开头的数字 C{9}{n-1}*A{n-1}{n-1}
if n>10 :
return 0
elif n==10:
return get(n)-get(n-1)
elif n==1:
return 10
else:
return get(10)/get(10-n)-get(9)/get(9-n+1)
# 1:0,1,2,3,4..9
def get(n):
global dic
if n in dic.keys():
return dic[n]
l=1
for i in range(1,n+1):
l=l*i
dic[n]=l
return l
205. 同构字符串
要求必须长度一样,元素种类个数一样
且相同的位置 一样
class Solution:
def isIsomorphic(self, s: str, t: str) -> bool:
if not (len(s)==len(t) and len(set(s))==len(set(t))):
return False
dic={
}
for index,schar in enumerate(s):
if schar not in dic.keys():
dic[schar]=index
else:
if t[index]!=t[dic[schar]]:
return False
return True
边栏推荐
- 阿里面试官:聊聊如何格式化Instant
- Pro * C Jin Cang database migration guide (4) KingbaseES Pro * C migration guide)
- 基于flowable的upp(统一流程平台)运行性能优化(2)
- Auto.js Pro 计算脚本运行时间
- Best Practices for Migration from Jincang Database from MySQL to KingbaseES (3. MySQL Database Migration Practice)
- HCIP第十八天
- 【原创】Auto.js get和post 案例
- 企业上云规划与云原生环境设计
- C语言实验十三 指针(三)
- C语言入门--指针
猜你喜欢
随机推荐
硬件设计哪些事-PCB设计那些事
AF-DNAT
关于 Redis 必问面试题,你知道哪些?
单元测试是什么?怎么写?主要测试什么?
AttributeError: module ‘xxx‘ has no attribute
多线程使用哈希表
C语言实验十三 指针(三)
Redshift贴logo的方法
Base64编码原理
瑞鹄转债上市价格预测
对话框管理器第四章:对话框消息循环
2022中国五金制品行业发展前景分析
机器学习【KNN案例、API、总结】
网工知识角|华为网络工程师,华为、华三、思科设备三层交换机如何使用三层接口?命令敲起来
vscode access denied to unins000.exe
Dynamically modify the title of the navigation bar in uniapp
log4j设置日志的时区
Best Practices for Migration from Jincang Database from MySQL to KingbaseES (3. MySQL Database Migration Practice)
在VScode里调试ROS程序
百度超级链:鼓励企业做自己的链









