当前位置:网站首页>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
边栏推荐
猜你喜欢

Redshift贴logo的方法

Chinese valentine's day??To the liver is the way!!!!!Auto. Js special position control method

ESP8266-Arduino编程实例-MAX6675冷端补偿K热电偶数字转换器驱动

C语言入门--指针

基于 Cyclone IV 在 Quartus 中配置 IP 核中的 PLL、RAM 与 FIFO 的详细步骤及仿真验证

七夕??继续肝文章才是正道!!Auto.js 特殊定位控件方法

在VScode里调试ROS程序

百度超级链:鼓励企业做自己的链

2022-08-02 顾宇佳 学习笔记 多线程

我的“眼睛”就是尺!
随机推荐
2022中国五金制品行业发展前景分析
道通转债,微芯转债,博22转债上市价格预测
七夕??继续肝文章才是正道!!Auto.js 特殊定位控件方法
2022-08-02 顾宇佳 学习笔记 多线程
Go新项目-编译项目的细节(4)
js Fetch返回数据res.json()报错问题
OneNote 教程,如何在 OneNote 中设置笔记格式?
ClickHouse—入门
(2022牛客多校五)H-Cutting Papers(签到)
【每日一题】622. 设计循环队列
Compose the displacement of the view
Base64编码原理
IPv4编址;A类、B类、C类、D类、E类IP地址(IP地址;网络地址和主机地址;子网掩码;网关;广播地址;)
一文了解SAP IBP是什么?
(一)Nacos注册中心集群环境搭建
ROS2自学笔记:机器视觉基础
Nacos入门学习
基于flowable的upp(统一流程平台)运行性能优化(3)
SqlSession [[email protected]]
Have bosses know date field flinksql is synchronized to the use of the null on how to deal with