首页 / 资讯中心 / 文章详情

Leetcode新手入门130 Day3

Leetcode新手入门130 Day3 ★ FEATURED ARTICLE
Leetcode新手入门130 Day3可迭代对象不可迭代对象切片[]str.join()n.pop(下标)n.remove(值)n.reverse()del list[idx]DP 本质print(*n) 解包**位置参数**列表 / 元组集合enumeratestr.count(子串)noob41 神秘石像的镜像序列noob42 左侧严格小于计数noob43 牛牛写作业noob44 数组技术维护可迭代对象能够被逐个取出元素的对象可以用在for循环*解包[]切片list()转换字符串str列表list元组tuple集合set字典dictrange对象()文件对象、生成器不可迭代对象int整数float浮点数bool布尔值切片[][:n] # 取前 n 个[-n:] # 取最后 n 个[:-n] # 去掉末尾 n 个[::-1] # 反转[::2] # 步长2隔一个取一个str.join()join 是字符串的方法用法为「分隔符字符串.join(序列)」。它会把序列里的所有元素拼接成一个字符串并在相邻元素之间插入这个分隔符。⚠️ 注意序列中的元素必须全部是字符串不能直接放数字print(‘ ’.join(map(str,list)))n.pop(下标)n 必须是列表 listpop() 是列表的内置方法用法为「列表.pop([下标])」。n.pop() 不带参数时默认删除列表的最后一个元素。n.remove(值)按照元素删除只删除第一个匹配的值n.reverse().reverse()是列表方法字符串没有 reverse 方法del list[idx]按照下标删除写法 删除依据 返回值list.pop(idx) 下标 返回被删掉的元素del list[idx] 下标 无返回值list.remove(val) 元素值 无返回值删除第一个等于 val 的元素DP 本质拆分问题子问题结果存储dp 数组避免重复计算大问题的解由更小子问题的解推出子问题一旦算出不再改变无后效性。不是所有题目都能用 DP必须满足重叠子问题 最优子结构 无后效性。print(*n) 解包位置参数列表 / 元组把 n 里面每一项拆开空格分隔打印出来不带括号。集合{要放进集合的元素 for 循环变量 in 可迭代对象 if 条件}enumerate遍历可迭代对象a同时返回下标对应元素str.count(子串)统计一个字符串中某个子串一共出现了多少次字符串.count(要找的子串)返回值出现的总次数noob41 神秘石像的镜像序列# 可以建一个空的列表# 也可以建一个 0 列表替换让 doubao 评估一下是否有意义还是只有二维有意义num[1,2,3,4],n4,dp[0,0,0],idx0# 下标逻辑一定要搞清楚-i3dp[0]4idx1-i2dp[1]3idx2-i1dp[2]2idx3 此时 idx3dp 最大下标是2下一轮-i0执行 dp[3]num[0] → dp[3] 不存在直接报错noob42 左侧严格小于计数双指针i负责遍历j负责计数# 最开始写成了单层嵌套nint(input())alist(map(int,input().split()))dp[0]*n min_valmin(a)max_valmax(a)# 获取所有最小、最大元素下标min_idx_set{ifori,numinenumerate(a)ifnummin_val}max_idx_set{ifori,numinenumerate(a)ifnummax_val}term0s0foriinrange(n):ifiinmax_idx_set:dp[i]i# 最大值dp等于下标elifiinmin_idx_setori0:dp[i]0# 最小值 或者 i0dp置0else:ifa[i]a[i-1]:termterm1ssterm dp[i]sprint(*dp)noob43 牛牛写作业行号不一定要分类讨论用2n12n2也可以s/n可以放在输出里importsys linessys.stdin.read().splitlines()Tint(lines[0])foriinrange(T):nint(lines[2*i1])alist(map(int,lines[2*i2].split()))minamin(a)maxamax(a)polemaxa-mina avesum(a)/n s0forjinrange(n):ss(a[j]-ave)**2print(pole,f{s/n:.3f})noob44 数组技术维护lines sys.stdin.read().splitlines()importsys linessys.stdin.read().splitlines()Tint(lines[0])foriinrange(T):n,klist(map(int,lines[2*i1].split()))alist(map(int,lines[2*i2].split()))S0cnt0forjinrange(n):ifa[j]k:SSa[j]ifa[j]0andS1:S-1cnt1else:passprint(cnt)
阅读完成 · 觉得有帮助?
咨询建站