LeetCode 每日一题 2023/1/9-2023/1/15

news/2024/10/22 16:49:28/

记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步


目录

      • 1/9 1806. 还原排列的最少操作步数
      • 1/10 753. 破解保险箱
      • 1/11 2283. 判断一个数的数字计数是否等于数位的值
      • 1/12 1807. 替换字符串中的括号内容
      • 1/13 2287. 重排字符形成目标字符串
      • 1/14 1819. 序列中不同最大公约数的数目
      • 1/15 2293. 极大极小游戏


1/9 1806. 还原排列的最少操作步数

模拟

def reinitializePermutation(n):""":type n: int:rtype: int"""perm = list(range(n))target = list(range(n))step = 0while True:step+=1perm = [perm[n//2+(i-1)//2] if i%2 else perm[i//2] for i in range(n)]if perm==target:return step

1/10 753. 破解保险箱

数学方法
https://leetcode.cn/problems/cracking-the-safe/solutions/393529/po-jie-bao-xian-xiang-by-leetcode-solution/

def crackSafe(n, k):""":type n: int:type k: int:rtype: str"""mod = 10**(n-1)ans = []mem = set()def dfs(node):for i in range(k):num = node*10+iif num not in mem:mem.add(num)dfs(num%mod)ans.append(str(i))dfs(0)return "".join(ans)+"0"*(n-1)

1/11 2283. 判断一个数的数字计数是否等于数位的值

统计各个数字出现次数
遍历检查是否一致

def digitCount(num):""":type num: str:rtype: bool"""m = {}for c in num:m[int(c)] = m.get(int(c),0)+1for i in range(len(num)):if m.get(i,0)!=int(num[i]):return Falsereturn True

1/12 1807. 替换字符串中的括号内容

按序遍历 m存储knowledge一一对应的内容
遇到(时 获取括号内容 在m中查询

def evaluate(s, knowledge):""":type s: str:type knowledge: List[List[str]]:rtype: str"""loc = 0n = len(s)ans = ""m = {}for k,v in knowledge:m[k] = vwhile loc<n:if s[loc]=="(":loc +=1cur = ""while s[loc]!=")":cur +=s[loc]loc+=1if cur in m:ans +=m[cur]else:ans +="?"else:ans +=s[loc]loc+=1return ans

1/13 2287. 重排字符形成目标字符串

统计s,target中各个字符出现的个数 计算target最多能够出现次数

def rearrangeCharacters(s, target):""":type s: str:type target: str:rtype: int"""t = {}for c in target:t[c] = t.get(c,0)+1cur = {}for c in s:cur[c] = cur.get(c,0)+1ans = 100for k,v in t.items():ans = min(ans,cur.get(k,0)//v)return ans

1/14 1819. 序列中不同最大公约数的数目

gcd辗转相除法求最大公约数
最大值为maxv 公约数的取值范围为[1,maxv]
value[num] 记录数组nums中的数值num
遍历所有公约数的可能性 公约数i
检查所有i的倍数j=x*i 如果j存在于nums 记录当前subgcd=j
如果得到当前subgcd=i 说明公约数i可以得到 ans+1

def countDifferentSubsequenceGCDs(nums):""":type nums: List[int]:rtype: int"""def gcd(a,b):if a<b:a,b=b,awhile b>0:a,b = b,a%breturn amaxv = max(nums)value = [False] * (maxv+1)for num in nums:value[num] = Trueans = 0for i in range(1,maxv+1):subgcd = 0for j in range(i,maxv+1,i):if value[j]:if subgcd==0:subgcd = jelse:subgcd = gcd(subgcd,j)if subgcd == i:ans +=1breakif subgcd<i:breakreturn ans

1/15 2293. 极大极小游戏

记录当前长度n 在原有数组内根据规则计算

def minMaxGame(nums):""":type nums: List[int]:rtype: int"""n = len(nums)while n>1:for i in range(0,n,2):if (i//2)%2==0:nums[i//2] = min(nums[i],nums[i+1])else:nums[i//2] = max(nums[i],nums[i+1])n //=2return nums[0]


http://www.ppmy.cn/news/20585.html

相关文章

【Linux】怎么理解进程

✍作者&#xff1a;阿润菜菜 &#x1f4d6;专栏&#xff1a;Liunx系统编程 本文通过冯诺依曼体系结构&#xff08;硬件部分&#xff09;和操作系统&#xff08;软件部分&#xff09;为基础来介绍我们应该如何理解进程&#xff0c;为后续的学习做铺垫。 本文目录一、预备知识1.建…

Pygame的SurfaceImageTime

Surface用来生成一个矩形&#xff0c;Image用来导入外部图片&#xff0c;Time用来暂停时间。 Surface 生成矩形 facepy.Surface((200,200))填充颜色 face.fill(blue) 放入界面 screen.blit(face,(50,50)) Image 导入图片 imgpy.image.load(d:\\图片\\1.jpg) 缩放…

Multus k8s网络浅谈

Multus是什么 k8s不提供网络解决方案&#xff0c;提供CNI ( Container Networking Interface )规范&#xff0c;被CNI插件遵守&#xff08;Flannel, Calico&#xff0c;Macvlan,Multus等&#xff0c;这些是网络方案&#xff09; Multus 提供了将多个接口添加到pod的功能 Macvl…

Hive sql 每天场景题 41

41、现有各直播间的用户访问记录表&#xff08;live_events&#xff09;如下&#xff0c;表中每行数据表达的信息为&#xff0c;一个用户何时进入了一个直播间&#xff0c;又在何时离开了该直播间 户访问记录表&#xff08;live_events&#xff09;如下 user_id (用户id) liv…

自动驾驶介绍、应用、前景

自动驾驶介绍、应用、前景1 介绍1.1 定义1.2 作用1.3 发展历程1.4 分类23年初竞争格局1.5 顾虑1.6 前景2 产业链现状2.1 芯片2.2 仿真3 技术路线3.1 是否交互3.1.1 单车智能3.1.2 车路协同3.2 主传感器区分3.2.1 纯视觉3.2.2 混合传感器3.3 前装还是后装3.3.1 前装3.3.2 后装4 …

NLP学习笔记(七) BERT简明介绍

大家好&#xff0c;我是半虹&#xff0c;这篇文章来讲 BERT\text{BERT}BERT (Bidirectional Encoder Representations from Transformers) 原始论文请戳这里 0 概述 从某种程度上来说&#xff0c;深度学习至关重要的一环就是表征学习&#xff0c;也就是学习如何得到数据的向…

垃圾收集器必问系列—CMS

本文已收录至Github&#xff0c;推荐阅读 &#x1f449; Java随想录 应该相信&#xff0c;自己是生活的战胜者。——雨果 文章目录CMS简介运作过程CMS的缺陷处理器资源敏感无法处理“浮动垃圾”内存碎片纵观全书《深入理解JVM虚拟机》第三版&#xff0c;在垃圾回收器这一篇章&a…

Qt扫盲-QTime理论总结

QTime理论总结一、概述二、使用1. 属性获取2. 时间加减3. 字符串与QTime互转一、概述 QTime对象包含一个时钟时间&#xff0c;可以用小时数、分钟数、秒数和毫秒数来表示。它提供了比较时间和通过添加毫秒数来操作时间的函数。 QTime使用24小时时钟格式&#xff1b;它没有AM/…