HackerRank做题
生活随笔
收集整理的這篇文章主要介紹了
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 aliceQueen’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做题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 017-通过govendor管理依赖包
- 下一篇: JDK16和JDK8共存与切换