欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

HackerRank做题

发布时间:2023/12/20 编程问答 70 豆豆
生活随笔 收集整理的这篇文章主要介绍了 HackerRank做题 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

Climbing the Leaderboard

链接

https://www.hackerrank.com/challenges/climbing-the-leaderboard/problem

思路

此处两边同时遍历即可,代价是O(n)

知识回顾

python的列表切片后不能赋值:nums[i:] = 1是不可以的

代码

def climbingLeaderboard(scores, alice):new_scores = list(set(scores))new_scores.sort(reverse = True)# remove duplicate and remain orderindex = len(new_scores) - 1for i in range(len(alice)):while alice[i] >= new_scores[index]:index -= 1if index < 0:for j in range(i, len(alice)):alice[j] = 1breakif index < 0:breakalice[i] = index + 2return alice

Queen’s Attack II

链接

https://www.hackerrank.com/challenges/queens-attack-2/problem

思路

用字典来做这种题,每个方向存放该方向能放置的最大棋子个数。

代码

def queensAttack(self,n, k, r_q, c_q, obstacles):def check(x, indicator):if indicator == -1:return x-1elif indicator == 0:return nelse:return n - xdef sign(x):if x > 0:return 1elif x == 0:return 0else:return -1position_dict = {0:[1,0],1:[-1,0],2:[1,1],3:[1,-1],4:[0,1],5:[0,-1],6:[-1,1],7:[-1,-1]}obstacles_dict = {}for i in position_dict.values():obstacles_dict["%d%d"%(i[0], i[1])] = min(check(r_q,i[0]), check(c_q,i[1]))for i in range(k):r, c = obstacles[i][0] - r_q, obstacles[i][1] - c_qif abs(r)==abs(c) or r*c == 0:key = "%d%d"%(sign(r), sign(c))length = max(abs(r),abs(c)) - 1if obstacles_dict[key] > length:obstacles_dict[key] = lengthprint(obstacles_dict)return sum(obstacles_dict.values())

总结

以上是生活随笔为你收集整理的HackerRank做题的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。