当前位置:网站首页>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
边栏推荐
猜你喜欢
金仓数据库 Pro*C 迁移指南( 4. KingbaseES 的 Pro*C 迁移指南)
基于 jetpack compose,使用MVI架构+自定义布局实现的康威生命游戏
【原创】Auto.js get和post 案例
Redshift贴logo的方法
ESP8266-Arduino编程实例-MAX6675冷端补偿K热电偶数字转换器驱动
OneNote 教程,如何在 OneNote 中设置笔记格式?
ClickHouse—入门
IDEA如何创建父子工程
Pro * C Jin Cang database migration guide (4) KingbaseES Pro * C migration guide)
使用docker容器搭建MySQL主从复制
随机推荐
高等代数_笔记_配方法标准化二次型
金仓数据库 Pro*C 迁移指南( 5. 程序开发示例)
HCIP第十八天
硬件设计哪些事-PCB设计那些事
关于 Redis 必问面试题,你知道哪些?
信号和槽的绑定
中原银行实时风控体系建设实践
基于 Cyclone IV 在 Quartus 中配置 IP 核中的 PLL、RAM 与 FIFO 的详细步骤及仿真验证
道通转债,微芯转债,博22转债上市价格预测
15【背景 渐变色】
shell之条件语句(条件测试、if语句,case语句)
【TA-霜狼_may-《百人计划》】先行部分 手搓视差体积云
PyTorch installation - error when building a virtual environment in conda before installing PyTorch
黑马程序员Servlet
怎么用redis限制同一ip重复刷浏览量
uniapp运行到手机,基座提示本应用无法独立运行,需要与hbuilderX 搭配使用
重定向printf到USB CDC、串口2
【 original 】 Auto. Js the get and post case
有大佬知道 使用flinksql是 同步的日期字段为null的话怎么处理吗
uniapp中动态修改导航栏标题