蓝桥杯最后冲刺暴力(二)

题目:有效的括号

问题描述

给定一个只由 ( ) { } [ ] 组成的字符串,判断括号是否合法匹配。合法规则:

  • 左括号必须用相同类型的右括号闭合
  • 左括号必须以正确的顺序闭合

输入格式

一行字符串

输出格式

合法输出 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,判断它是否为有效的山脉数组

有效的山脉数组需满足以下条件:

  1. arr.length >= 3
  2. 存在某个下标 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),计算 xn 次幂。n 可以是正数、负数、0。

输入格式

一行输入两个数:xn

  • 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)
相关推荐
明灯伴古佛2 小时前
面试:Java中乐观锁的实现原理是什么
java·面试·职场和发展
XiYang-DING2 小时前
【LeetCode】232. 用栈实现队列
算法·leetcode·职场和发展
白眼黑刺猬2 小时前
如何构建 Flink SQL 任务的血缘分析
大数据·面试·职场和发展·flink
yoyobravery2 小时前
蓝桥杯第13届单片机(满分)
单片机·蓝桥杯
苦瓜小生2 小时前
天玑学堂Agent面试总结(二)「持续更新」
面试·职场和发展
倦王3 小时前
力扣日刷45
算法·leetcode·职场和发展
白眼黑刺猬3 小时前
字节二面:订单状态回撤: 支付回调延迟导致的“先退单后下单”乱序,Flink如何利用Watermark和状态处理?
大数据·面试·职场和发展·flink
Tanecious.3 小时前
蓝桥杯备赛:Day7- U535982 C-小梦的AB交换
c语言·c++·蓝桥杯
小肝一下5 小时前
每日两道力扣,day5
数据结构·c++·算法·leetcode·职场和发展·hot100