HJ5 进制转换

while True:try:s=input()#print(s)print(int(s,16))except:break

NC61 两数之和

class Solution:def twoSum(self , numbers: List[int], target: int) -> List[int]:re=[]hash={}#创建哈希表,两元组分别表示值、下标for i in range(len(numbers)):temp=target-numbers[i]#在哈希表中查找target-numbers[i]if temp not in hash:#若是没找到,将此信息计入哈希表hash[numbers[i]]=ielse:re.append(hash[temp]+1)#哈希表中记录的是之前的数字,所以该索引比当前小re.append(i+1)breakreturn re

HJ3 明明的随机数 (快速排序)

data=[]
while True:try:n=input()#指定为N个数,输入#print(n)lst=[]#指定为N个数,输入for i in range(int(n)):#循环N次lst.append(int(input()))#空集合中追加一个N个数中的某一个随机数uniq=set(lst)#列表去重,但是会变成无序for j in sorted(uniq):print(j)except:break

HJ10 字符个数统计

while True:try:s=input()#print(s)str=''.join(set(s))# 去重后以字符串的形式count=0# 开始计数for i in str:if ord(i)>=0 and ord(i)<=127:count+=1# 计数print(count)except:break
#哈希的方式
while True:try:s=input()#print(s)dst={}l=list(s)# str转为listcount=0# 开始计数for i in l:if ord(i)>=0 and ord(i)<=127 and i not in dst:dst[i]=1count+=1# 计数print(count)except:break

NC68 跳台阶

# 斐波拉契数列 递归 动态规划
class Solution:def jumpFloor(self, number):f1=1f2=2if number==1:return f1elif number==2:return f2for _ in range(number-2):f2,f1=f1+f2,f2return f2

HJ17 坐标移动

alist = input().split(';')
#line=input()
#alist = line.split(';')
init=[0,0] #初始位置
for i in alist:if not 2<=len(i)<=3:continuetry:direction=i[0]step=int(i[1:])if direction in ['A','D','W','S']:if 1<=step<=99:if direction=='A':init[0]-=stepelif direction=='D':init[0]+=stepelif direction=='S':init[1]-=stepelif direction=='W':init[1]+=stepexcept:continue
print(str(init[0])+','+str(init[1]))

HJ20 密码验证合格程序

def check(s):if len(s)<=9: #条件一:长度判断return 'NG'a,b,c,d=0,0,0,0 #定义四种大小写字母.数字.其它符号,以上四种至少三种for i in s:#条件二:四种大小写字母.数字.其它符号,四种至少三种if ord('a')<=ord(i)<=ord('z'):a=1elif ord('A')<=ord(i)<=ord('Z'):b=1elif ord('0')<=ord(i)<=ord('9'):c=1else:d=1if a+b+c+d<3:return 'NG'for i in range(len(s)-3):#条件三:if len(s.split(s[i:i+3]))>=3:return 'NG'return 'ok'while True:try:p=input()if check(p)=='NG':print('NG')else:print('OK')except:break

7/45

HJ23 删除字符串中出现次数最少的字符

s=input()
d={}#输入一组字符串s,同时创建一个新的字典dic;
for i in s:if i in d:d[i]+=1else:d[i]=1 #遍历字符串s,如果元素在字典里,dic[i]累加次数,否则,dic[i]为1;
MIN=min(d.values())#使得MIN为出现最小次数的值;
for j in s:if d[j]==MIN:s=s.replace(j,'')#重新遍历s,如果i在字典中记录的次数等于MIN,则在原字符串s中用空字符替换;
print(s)

HJ33 整数与IP地址间的转换

分两部分

iplist=input().split('.')
num=input()
ipnum=''
#ip2num
for i in iplist:a=bin(int(i,10))[2:]#转化为2进制if len(a)<8:a=('0'*(8-len(a)))+aelse:a=aipnum+=a
print(int(ipnum,2))#将ipnum这个2进制数转化为十进制
#num2ip
num2ip=[]
num2=bin(int(num,10))[2:]#是将num这个10进制数转化为2进制
if len(num2)<32:num2=('0'*(32-len(num2)))+num2#二进制数长度不够32位用0补齐
else:num2=num2
for i in range(4):b=num2[8*i:8*i+8]#8位分别为一个数b=str(int(b,2))#将这个8位的二进制数转化为10进制字符串num2ip.append(b)
print('.'.join(num2ip))#将4个数的列表用.拼成字符串

9/45

HJ101 输入整型数组和排序标识,对其元素按照升序或降序进行排序

## list(map(int,l))  # 先使用map把l映射成整型,在使用 list() 转换为列表n=input()
l=input().split(' ')
l=list(map(int,l))
srt=int(input())if srt==0:l.sort()l=map(str,l)print(' '.join(l))
elif srt==1:l.sort(reverse=True)l=map(str,l)print(' '.join(l))

1839. 所有元音按顺序排布的最长子字符串

#暂时记不住
class Solution:def longestBeautifulSubstring(self, word: str) -> int:window=list()#定义滑动窗口cnt=set()left,right=0,0#窗口左右指针res=0while right<len(word):if not window or word[right]>=window[-1]:window.append(word[right])cnt.add(word[right])if len(cnt)==5:res=max(res,len(window))else:window=list()cnt=set()left=rightwindow.append(word[left])cnt.add(word[left])right+=1return res

HJ46 截取字符串

s=input()
k=int(input())
print(s[:k])

NC149 kmp算法

给你一个文本串 T ,一个非空模板串 S ,问 S 在 T 中出现了多少次

NC100 把字符串转换成整数(atoi)

#通过50%
class Solution:def StrToInt(self , s: str) -> int:# write code heres = s.strip()#去掉前导空格if not s:return 0if s[0]=='-': #去掉空格就什么都没有了sign=-1else:sign=1num=0for i in s:if i.isdigit():num *= 10num+= ord(i)- 48else:return 0return min(max(sign*num,-2**31),2**31-1)

HJ70 矩阵乘法计算量估算(中)

n=int(input())
arr=[]#存矩阵的行列信息
order=[]#栈,用来计算栈顶部的两个矩阵
re=0
for i in range(n):arr.append(list(map(int,input().split())))#处理矩阵行列的数据
f=input()#最后为相乘顺序
for i in f:if i.isalpha():#作用是检查一个字符串中所有的字符是否都是由字母构成的,并且至少有1个字符temp=ord(i)-65#将A转化为0,B转化为1,C转化为2,依次。temp作为第temp个矩阵的indexorder.append(arr[temp])elif i==')' and len(order)>=2:b=order.pop()a=order.pop()re+=a[1]*b[1]*a[0]order.append([a[0],b[1]])
print(re)

HJ8 合并表记录(简单)

n=int(input())
arr=[]
d={}
for i in range(n):s=input().split()#s=s.split(' ')key=int(s[0])value=int(s[1])d[key]=d.get(key, 0) +value#get(key, 0) 作用是获取字典中key的值,如果没有就置为默认的0
for j in sorted(d):# 最后的键值对按照升值排序print(j,d[j])

HJ14 字符串排序(简单)

n=int(input())
l=[]
for i in range(n):l.append(input())l.sort()
for i in l:print(i)

HJ27 查找兄弟单词(中等)

#读取输入数据,并且转换为列表
data1 = input().split()
#获取单词的个数
n1 = data1[0]
#按字典排序的第几个兄弟词
n2 = data1[-1]
#获取输入的n个单词
data2 = data1[1:-2]
#获取兄弟词
data3 = data1[-2]
#用于存储兄弟词的数量
n3 = 0
#用于存储兄弟词
data4 = []
for word in data2:if word == data3:continueelif sorted(word) == sorted(data3):n3 = n3 + 1data4.append(word)
print(n3)
data5 = sorted(data4)#将兄弟词按照字典排序
print(data5[int(n2)-1])

NC37 合并区间

from functools import cmp_to_keyclass Solution:def merge(self , intervals: List[Interval]) -> List[Interval]:intervals.sort(key = (lambda x:x.start))res = []for i in range(len(intervals)):if not res:res.append(intervals[i])else:if res[-1].end >= intervals[i].start:res[-1].end = max(res[-1].end,intervals[i].end)else:res.append(intervals[i])return res

HJ68 成绩排序(较难)

#仅通过30%
import sys
n=int(input())
func=int(input())
arr=[]
d={}
if func==0:flag=True
else:flag=False
for i in range(n):s=input().split(' ')s=list(map(str,s))#print(s)arr.append(s)#print(arr)arr.sort(key=lambda x:x[1],reverse=flag)
for j in arr:print(*j)

HJ65 查找两个字符串a,b中的最长公共子串(中等)


a, b = input(), input() # a保存短,b保存长
if len(a) > len(b):a, b = b, a
res = ''
for i in range(0, len(a)):#遍历短的字符串for j in range(i+1, len(a)):#把短的字符串作为滑动窗口,滑动窗口减小if a[i:j+1] in b and j+1-i > len(res):#如果a的子串在b里 并且指针合法res = a[i:j+1]
print(res)

JZ4 二维数组中的查找(中等)

NC52 有效括号序列(简单)

class Solution:def isValid(self, s: str) -> bool:re=Falsedd={'(':')','[':']','?':'?','{':'}'}d=['?']for i in s:if i in dd: #如果是左括号,加入堆栈d.append(i) elif dd[d.pop()]!=i:#如果是右括号,且不是栈顶的左括号对应的右括号,返回Falsere=Falsebreakelse:#如果是右括号,且是栈顶的左括号对应的右括号,返回Falsere=Trueif len(d)//2==1 :re=False#最后堆栈长度为奇数,没有对应括号return re

NC175 合法的括号字符串

#通过50%
class Solution:def isValidString(self , s: str) -> bool:# write code hereclass Solution:re=Falsedd={'(':')','[':']','?':'?','{':'}','*':'*'}d=['?']for i in s:if i in dd:if i=='*':d.pop()else:d.append(i)elif dd[d.pop()]!=i :re=Falsebreakelse:re=Trueif len(d)==1 and d[0]=='?':return Trueelif len(d)//2==1 :re=False#最后堆栈长度为奇数,没有对应括号return re

leetcode674. 最长连续递增序列

#通过23/35
class Solution:def findLengthOfLCIS(self, nums: List[int]) -> int:max=1l0=nums[0]for i in range(1,len(nums)):#i+=1#max=1print(nums[i])if nums[i]>l0:max+=1l0=nums[i]else:return maxreturn max

NC17 最长回文子串(简单)

贪心算法
step 1:遍历字符串每个字符。
step 2:以每次遍历到的字符为中心(分奇数长度和偶数长度两种情况),不断向两边扩展。
step 3:如果两边都是相同的就是回文,不断扩大到最大长度即是以这个字符(或偶数两个)为中心的最长回文子串。
step 4:我们比较完每个字符为中心的最长回文子串,取最大值即可。

class Solution:def getLongestPalindrome(self , A: str) -> int:# write code heremaxlen=1for i in range(len(A)-1):maxlen=max(maxlen,max(self.fun(A,i,i),self.fun(A,i,i+1)))return maxlendef fun(self, s: str, begin: int, end: int) -> int:while begin >=0 and end<len(s) and s[begin]==s[end]:begin-=1end+=1return end-begin-1

NC28 最小覆盖子串(较难)

HJ41 称砝码(中等)

n = int(input())
m = list(map(int,input().split()))#各个砝码重量
x = list(map(int,input().split()))#对应数量amount = []
weights = {0,}
for i in range(n):for j in range(x[i]):amount.append(m[i])
print(amount)for i in amount:for j in list(weights):weights.add(i+j)print(list(weights))
print(len(weights))

HJ48 从单向链表中删除指定值的节点(中等)

while True:try:l = input().split()head = l[1]rm = l[-1]l = l[2:-1]res = [head]for i in range(0, len(l), 2):# i = i*2# if i>len(l):#     breaka = l[i]b = l[i+1]res.insert(res.index(b)+1, a)res.remove(rm)print(' '.join(res)+" ")except:break
avatar
2590 浏览

HJ25 数据分类处理(较难)

while True:try:a=input().split()[1:]b=map(str,sorted(map(int,set(input().split()[1:]))))totalNum=0res=""for num in b:singleRes,count="",0for i,v in enumerate(a):if num in v:singleRes+=str(i)+" "+v+" "totalNum+=2count+=1if count:singleRes=num+" "+str(count)+" "+singleRestotalNum+=2res+=singleResprint((str(totalNum)+" "+res).rstrip())except:break

HJ29 字符串加解密(中等)

a = input()
a = list(a) #需要加密的字符串
b = input()
b = list(b) #需要解密的字符串
for i in range(len(a)):#加密过程if(a[i].isupper()): #如果字符是大写字母if(a[i] == 'Z'): #首先如果是Z的话变为a,若z的ascll+1的值是‘{’a[i] = 'a'else:a[i] = a[i].lower() #先变为小写c = ord(a[i]) + 1 #ascll码+1a[i] = chr(c) #转为字符elif(a[i].islower()): #小写同理if(a[i] == 'z'):a[i] = 'A'else:a[i] = a[i].upper()c = ord(a[i]) + 1a[i] = chr(c)elif(a[i].isdigit()): #若是数字则+1,9需要单独处理if(a[i] == '9'):a[i] = '0'else:a[i] = int(a[i]) + 1a[i] = str(a[i])else: #若是其他字符则保持不变a[i] = a[i]
for i in range(len(b)): #解密过程if(b[i].isupper()): #若为大写则先变为小写,再ascll减一,A要单独处理if(b[i] == 'A'):b[i] = 'z'else:b[i] = b[i].lower()c = ord(b[i]) - 1b[i] = chr(c)elif(b[i].islower()): #若是小写要先变为大写,再ascll减一,a要单独处理if(b[i] == 'a'):b[i] = 'Z'else:b[i] = b[i].upper()c = ord(b[i]) - 1b[i] = chr(c)elif(b[i].isdigit()):#若是数字需要减一,0要单独处理if(b[i] == '0'):b[i] = '9'else:b[i] = int(b[i]) - 1b[i] = str(b[i])else:b[i] = b[i]
print(''.join(a)) #按要求输出
print(''.join(b))

leetcode322 零钱兑换(中等)

https://leetcode.cn/problems/coin-change/discussion/

HJ43 迷宫问题(中等)

dfs深度优先本质递归回溯

m, n = list(map(int, input().split()))
maze = []
for _  in range(m):maze.append(list(map(int, input().split())))
def walk(i, j, pos=[(0, 0)]):if j+1 < n and maze[i][j+1] == 0: # 向右if (i, j+1) not in pos:walk(i, j+1, pos + [(i, j+1)])if j-1 >= 0 and maze[i][j-1] == 0: # 向左if (i, j-1) not in pos:walk(i, j-1, pos + [(i, j-1)])if i+1 < m and maze[i+1][j] == 0: # 向下if (i+1, j) not in pos:walk(i+1, j, pos + [(i+1, j)])if i-1 >= 0 and maze[i-1][j] == 0: # 向上if (i-1, j) not in pos:walk(i-1, j, pos + [(i-1, j)])if (i, j) == (m-1, n-1): # 到达出口for p in pos:print('(' + str(p[0]) + ',' + str(p[1]) + ')')walk(0, 0)

leetcode200 岛屿问题(中等)

经典题目,深度优先搜索
https://leetcode.cn/problems/number-of-islands/

HJ22 汽水瓶

def f(n):if n == 0: return 0if n == 1: return 0if n >=2: return f(n-2) + 1while True:n=int(input())if n != 0:print(f(n))else:break

HJ2 计算某字符出现次数

#通过12/13
a = input().strip()
b=input().split()
#print(a)
re=0for i in a:#print((ord(i)-ord(b[0])))#print( (ord(b[0])-ord(i)))if i==b[0] or abs(ord(i)-ord(b[0]))==32:# print(i)re+=1
print(re)
#print(ord('a'),ord('A'))

HJ4 字符串分隔

s=input().strip()
if len(s)<8:print(s+('0'*(8-len(s))))
elif len(s)==8:print(s)
else:#print(int(len(s)//8))for i in range(int(len(s)//8)+1):#print(i)if (len(s)%8)!=0:#print((len(s)%8))#print(len(s))#print(s[8*(i+1):])if i<int(len(s)//8):print(s[i*8:8*(i+1)])elif i==(len(s)//8):print(s[8*(i):]+('0'*(8-(len(s)%8))))else:print(s[i*8:8*(i+1)])

HJ108 求最小公倍数

#通过7/12
a,b=list(map(int, input().split()))
if a < b:a,b=b,a
for i in range(b):# print('x',i)if (a*(i+1))%b==0:print(a*(i+1))

HJ6 质数因子

import math
n = int(input())
for i in range(2, int(math.sqrt(n))+1):#sqrt ()函数返回x的平方根 (x > 0)while n % i == 0:print(i, end=' ')n = n // i
if n > 2:print(n)

将数组分成和相等的多个子数组,求子数组的最大个数

一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值
比如{3,2,4,3,6} 可以分成{3,2,4,3,6} m=1;
{3,6}{2,4,3} m=2
{3,3}{2,4}{6} m=3 所以m的最大值为3
https://developer.aliyun.com/article/387843

【刷题】20230318相关推荐

  1. 第十四届蓝桥杯三月真题刷题训练——第 15 天

    目录 第 1 题:斐波那契与7 问题描述 答案提交 运行限制 代码: 第 2 题:小蓝做实验 问题描述 答案提交 运行限制 代码: 第 1 题:斐波那契与7 问题描述 斐波那契数列的递推公式为: Fn ...

  2. 牛年前的一小结——打响本命年的第一枪,继续刷题!

    经过一段时间的小尝试,摸索出了一点点头儿吧. 总结一下子. 关于面试的java,像我这个经验层次(1-2year普通厂)的都不会太难.最多超不出力扣中等难度. 多练习链表.树.指针类的比较基础的题目: ...

  3. 牛客网里刷题:JS获取输入的数组

    有的时候我们刷题会遇到下面这种输入格式,那么用js怎么把它变成数组呢? [1,2,3,4,5] 难道用readline()之后在踢掉首尾的字符吗?这样也太麻烦了! 我发现了一个好用的方法: let l ...

  4. 【Leetcode】刷题之路2(python)

    哈希映射类题目(简单题小试牛刀啦bhn) 242.有效的字母异位词 349.两个数组的交集 1002.查找常用字符 202.快乐数 383.赎金信 242. 有效的字母异位词 用python的Coun ...

  5. 【Leetcode】 刷题之路1(python)

    leetcode 刷题之路1(python) 看到有大佬总结了一些相关题目,想着先刷一类. 1.两数之和 15.三数之和 16.最接近的三数之和 11.盛最多的水 18.四数之和 454.四数相加II ...

  6. 力扣(LeetCode)刷题,简单+中等题(第35期)

    力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升. 第1题:解码异或后的排列 试题要求如下: 回答(C语言): /*** Note: ...

  7. 力扣(LeetCode)刷题,简单+中等题(第34期)

    目录 第1题:整数转罗马数字 第2题:电话号码的字母组合 第3题:二叉树的所有路径 第4题:砖墙 第5题:下一个排列 第6题:括号生成 第7题:删除并获得点数 第8题:全排列 第9题:颜色分类 第10 ...

  8. 力扣(LeetCode)刷题,简单+中等题(第33期)

    目录 第1题:Z 字形变换 第2题:删除字符串中的所有相邻重复项 第3题:基本计算器 II 第4题:螺旋矩阵 第5题:螺旋矩阵 II 第6题:盛最多水的容器 第7题:删除有序数组中的重复项 II 第8 ...

  9. 力扣(LeetCode)刷题,简单+中等题(第32期)

    目录 第1题:数组的度 第2题:托普利茨矩阵 第3题:爱生气的书店老板 第4题:翻转图像 第5题:有效的数独 第6题:无重复字符的最长子串 第7题:区域和检索 - 数组不可变 第8题:二维区域和检索 ...

  10. 力扣(LeetCode)刷题,简单+中等题(第31期)

    目录 第1题:同构字符串 第2题:最后一块石头的重量 第3题:最小路径和 第4题:键盘行 第5题:存在重复元素 II 第6题:两数相加 第7题:三个数的最大乘积 第8题:等价多米诺骨牌对的数量 第9题 ...

最新文章

  1. python符号求导
  2. TOML-to-Go : 帮你快速生成 Go 结构体
  3. Spring Boot中使用Swagger2构建RESTful APIs
  4. NeurIPS 2019|腾讯AI Lab详解入选论文,含模仿学习、强化学习、自动机器学习等主题...
  5. python caffe 训练自己的模型_python接口调用已训练好的caffe模型测试分类方法
  6. Deploy过程出错解决
  7. 简单介绍分析一下JSP所生成的Servlet代码
  8. 函数调用你知道几种方法
  9. 微信信息轰炸【简易版】
  10. 中艺人脸识别考勤机使用方法_人脸识别考勤机说明书及使用方法
  11. html把div做成透明,Html-Css-div半透明
  12. mbedtls学习4.mbedtls_RAM/ROM优化指南
  13. JAVA面向对象编程1
  14. python中空字符串是什么_python为空怎么表示 python如何判断字符串为空
  15. Sphinx语法设置
  16. iOS 11.0新功能
  17. 如何辨别论文是不是SCI/EI?
  18. Qt:Qt导出Excel表格
  19. 奥的斯电梯服务器自动呼梯,奥的斯MCS系统电梯轿厢内呼梯保密设置
  20. 毕业设计-基于微信小程序的智慧校园系统

热门文章

  1. Mac写作软件妙笔如何调换夜间模式?WonderPen调整夜间模式的图文教程
  2. android status_bar_height动态调整,Android沉浸状态栏(StatusBar)兼容方案
  3. 2012 PHP热门资料64个+经典源码50个——下载目录 :
  4. Howto: Ubuntu下的AMSS编译环境配置
  5. 面向对象分析与设计--OOAD
  6. 做自媒体,推荐一些好用免费的配音软件
  7. 育人优化计算机试题,优化公寓育人氛围,增强学生自律意识——数学系、计算机科学系开展PPT制作和个人简历制作大赛...
  8. 单调栈图文详解(附Java模板)
  9. VSB9网站群管理平台页面添加文章列表方法
  10. 怎么改善失眠,五款有助于改善失眠的好物分享