题目:有效的括号
问题描述
给定一个只由
(){}[]组成的字符串,判断括号是否合法匹配。合法规则:
- 左括号必须用相同类型的右括号闭合
- 左括号必须以正确的顺序闭合
输入格式
一行字符串
输出格式
合法输出
True,不合法输出False样例输入 1
plaintext
()[]{}样例输出 1
plaintext
True样例输入 2
plaintext
(]样例输出 2
plaintext
False
python
s = input().strip()
stack = []
for c in s:
if c == '(':
stack.append(')')
elif c == '[':
stack.append(']')
elif c == '{':
stack.append('}')
else:
if not stack or stack.pop() != c:
print(False)
exit()
print(not stack)
问题描述
给一个非递减有序数组,删除重复出现的元素,使每个元素只出现一次,输出处理后的数组。
输入格式
第一行:n第二行:n 个整数
输出格式
去重并保持顺序的数组
样例输入
plaintext
6 1 1 2 2 3 3样例输出
plaintext
1 2 3
python
s=int(input())
a=list(map(int,input().split()))
res=[]
for x in s:
if x not in res:
res.append(x)
print(' '.join(map(str,res)))
python
n = int(input())
nums = list(map(int, input().split()))
nums = sorted(list(set(nums)))
print(' '.join(map(str, nums)))
给出一个代表高度的数组,求能勾勒出的最大矩形面积。为了稳妥,直接给你暴力双重循环写法,不搞单调栈。
输入格式
第一行:n第二行:n 个非负整数
输出格式
最大面积
样例输入
plaintext
6 2 1 5 6 2 3样例输出
plaintext
10
python
n=int(input())
h=list(map(int,input().split()))
max_area=0
for i in range(n):
for j in range(i,n):
kuan=j-i+1
height=min(h[i:j+1])
area=kuan*height
if area>max_area:
max_area=area
print(max_area)
题目描述
根据逆波兰表示法 ,求表达式的值。有效的运算符包括
+,-,*,/。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:
- 整数除法只保留整数部分。
- 给定逆波兰表达式总是有效的。
输入格式
输入一行,包含若干个用空格分隔的整数 与运算符,代表一个有效的逆波兰表达式。
输出格式
输出一个整数,表示表达式的值。
输入样例
plaintext
2 1 + 3 *输出样例
plaintext
9
逆波兰表达式求值 ------ 题目大意
逆波兰表达式,也叫后缀表达式。
它的规则很简单:
- 平时我们写的是:
(2 + 1) × 3,这叫中缀表达式 - 逆波兰表达式把运算符放后面 ,写成:
2 1 + 3 *
题目就是:给你一个这样的后缀表达式,让你算出它的结果。
python
s=input().split()
stack=[]
for c in s:
if c in '+-*/':
b=stack.pop()
a=stack.pop()
if c=='+':
stack.append(a+b)
elif c=='-':
stack.append(a-b)
elif c=='*':
stack.append(a*b)
elif c=='/':
stack.append(int(a/b))
else:
stack.append(int(c))
print(stack[0])
题目描述
给定一个只包含
'('和')'的字符串,找出最长的有效括号子串,返回其长度。输入格式
输入一行只由
(和)组成的非空字符串。输出格式
输出一个整数,表示最长有效括号子串的长度。
输入样例
plaintext
(()输出样例
plaintext
2
python
s=input().strip()
n=len(s)
max_len=0
for i in range(n):
cnt=0
for j in range(i,n):
if s[j]=='(':
cnt+=1
else:
cnt-=1
if cnt<0:
break
if cnt==0:
max_len=max(max_len,j-i+1)
print(max_len)
题目:有效的山脉数组
题目描述
给定一个整数数组
arr,判断它是否为有效的山脉数组。有效的山脉数组需满足以下条件:
arr.length >= 3- 存在某个下标
i(从 0 开始),满足:
- 数组在
i之前严格递增- 数组在
i之后严格递减输入格式
第一行输入一个整数
n,表示数组长度第二行输入n个整数,表示数组输出格式
如果是有效的山脉数组,输出
True,否则输出False输入样例 1
plaintext
5 1 3 5 2 1输出样例 1
plaintext
True输入样例 2
plaintext
4 1 2 3 4输出样例 2
plaintext
False
python
n = int(input())
arr = list(map(int, input().split()))
if n < 3:
print(False)
exit()
i = 0
# 上升
while i < n - 1 and arr[i] < arr[i + 1]:
i += 1
# 山顶不能在两端
if i == 0 or i == n - 1:
print(False)
exit()
# 下降
while i < n - 1 and arr[i] > arr[i + 1]:
i += 1
print(i == n - 1)
python
if i == n - 1:
print(True)
else:
print(False)
题目大意(蓝桥杯格式)
给你两个已经从小到大排好序 的链表,把它们合并成一个新的有序链表并输出。
输入格式
第一行:第一个链表的元素第二行:第二个链表的元素
输出格式
合并后的有序链表,数字用空格隔开
样例输入
plaintext
1 2 4 1 3 4样例输出
plaintext
1 1 2 3 4 4
python
# 读取两个链表
a = list(map(int, input().split()))
b = list(map(int, input().split()))
# 合并 + 排序(暴力秒解,省三稳过)
c = a + b
c.sort()
# 输出
print(' '.join(map(str, c)))
题目:Pow (x, n)
题目描述
实现
pow(x, n),计算x的n次幂。n可以是正数、负数、0。输入格式
一行输入两个数:
x和n
- x:浮点数 / 整数
- n:整数(可正可负)
输出格式
输出结果,保留小数即可
样例输入
plaintext
2 10样例输出
plaintext
1024
python
x, n = input().split()
x = float(x)
n = int(n)
# 直接算 x 的 n 次方
res = x ** n
print(res)
题目描述
给你一个不包含重复元素的整数数组,返回它所有可能的子集(幂集),解集不能包含重复子集。
输入格式
一行:n 个整数(空格分隔)
输出格式
按行输出所有子集,每个子集用方括号括起来
样例输入
plaintext
1 2 3样例输出
plaintext
[] [1] [2] [1, 2] [3] [1, 3] [2, 3] [1, 2, 3]
python# 输入数组 nums = list(map(int, input().split())) # 结果一开始只有空集 res = [[]] # 遍历每个数字 for num in nums: # 先新建空的临时列表 temp = [] # 遍历已有的所有子集 for sub in res: # 每个子集都加上当前数字,生成新子集 new_sub = sub + [num] temp.append(new_sub) # 把新子集全部加进结果 res = res + temp # 输出所有子集 for i in res: print(i)