T1:数组中不等三元组的数目
class Solution:
def unequalTriplets(self, nums: List[int]) -> int:
ans = 0
n = len(nums)
for i in range(n):
for j in range(i+1,n):
for k in range(j+1,n):
if len({nums[i], nums[j], nums[k]}) == 3:
ans +=1
return ans
T2: 二叉搜索树最近节点查询
学习灵茶山艾府的
class Solution:
def closestNodes(self, root: Optional[TreeNode], queries: List[int]) -> List[List[int]]:
a = []
def dfs(o: Optional[TreeNode]) -> None:
if o is None: return
dfs(o.left)
a.append(o.val)
dfs(o.right)
dfs(root)
ans = []
for q in queries:
j = bisect_right(a, q)
min = a[j - 1] if j else -1
j = bisect_left(a, q)
max = a[j] if j < len(a) else -1
ans.append([min, max])
return ans
T1:商品种类
上次周赛做过差不多的,直接修改一点,不想重写了
def collect_input():
winning_team = []
while True:
try:
t = input()
winning_team.append(t)
except EOFError as e:
break
return winning_team
def goal_win(winning_team):
number_teams = {}
for i in winning_team:
if i not in number_teams:
number_teams[i] = 1
else:
number_teams[i] += 1
print(len(number_teams))
if __name__ == '__main__':
Number_of_balls = input()
list_team = collect_input()
goal_win(list_team)
T2:字符串
S = input()
stack = []
for s in S:
if len(stack) == 0 or stack[-1] != s:
stack.append(s)
else:
stack.pop(-1)
print("".join(stack))
T3:排队
最开始这样写的,但是一直超时
num = input()
list_num = list(map(int, input().split()))
new_list = []
n = len(list_num)
for i in range(n):
num_child = -1
for j in range(n-1,i,-1):
if min(list_num[i+1:n]) > list_num[i]:
break
if list_num[j] < list_num[i]:
num_child = j-i-1
break
print(num_child,end=' ')
后来学习了一下其他大佬的
n=int(input())
h=list(map(int,input().split()))
I=sorted(range(n),lambda i:h[i])
mx=-1
ans=[-1]*n
for i in I:
if mx>i:
ans[i]=mx-i-1
mx=max(mx,i)
print(*ans,sep=' ')