Week 2
Day 1
III = 3
XII = 12
XXVII=27.
しかし表現4の場合はIIIではなくIV
9はIXです.
VとXの前に来て、4、9
XはLとCの前40,90に来る
CはD,Mの前に来て,400,900
def roman_to_num(s):
roman_numerals = {
'I' : 1,
'V' : 5,
'X' : 10,
'L' : 50,
'C' : 100,
'D' : 500,
'M' : 1000,
}
answer=roman_numerals[s[-1]]
for i in range(len(s)-1, 0, -1):
if roman_numerals[s[i]] <= roman_numerals[s[i-1]]:
answer += roman_numerals[s[i-1]]
elif roman_numerals[s[i]] > roman_numerals[s[i-1]]:
answer -= roman_numerals[s[i-1]]
return abs(answer)
Day 2
def more_than_half(nums):
harf_n = len(nums) // 2
set_list = set(nums)
for i in set_list:
if nums.count(i)>=harf_n:
return i
次のコードは、重複する数値の個数を計算し、最大の数値を出力します.num_list= []
num_set= set(nums)
for i in nums:
num_list.append(nums.count(i))
return(max(num_list))
Day 3
sは、複数の括弧からなるStringパラメータである.
true/false、sが有効かどうかを返してください.
「(」、「)」、「[」、「]」、「{」、「}」の6種類があります.次の場合に有効です.
かっこを開始するには、同じカッコで終了します.かっこの順序は正しいです.
例:
s = "([)]"
return false
def is_valid(string):
stack= []
bracket = {"(": ")", "{": "}", "[": "]"}
if len(string) == 1:
return False
for i in string:
if i in bracket:
stack.append(i)
elif len(stack) == 0 or bracket[stack.pop()] != i:
return False
return len(stack) == 0
ほかの方法def is_valid(string):
left = ['(', '{', '[']
right = [')', '}', ']']
stack = []
for letter in string:
if letter in left:
stack.append(letter)
elif letter in right:
if len(stack) <= 0:
return False
if left.index(stack.pop()) != right.index(letter):
return False
return len(stack) == 0
Day 4
numsは数字からなる配列です.
最もよく現れる数字をk個返してください.
nums = [1,1,1,2,2,3], k = 2
return [1,2]
def top_k(nums, k):
num_count = {}
result = []
for i in nums:
if i in num_count:
num_count[i] += 1
else:
num_count[i] = 1
num_count = sorted(num_count.items(), key=lambda x: x[1], reverse=True)
for i in range(k):
result.append(num_count[i][0])
return result
Day 5
def get_max_area(height):
l = 0
r = len(height) -1
area = 0
while l < r:
area = max(area, min(height[l],height[r]) * (r - l))
if height[l] < height[r]:
l += 1
else:
r -= 1
return area
別の答えdef get_max_area(height):
result = 0
for i in range(len(height)):
for j in range(i + 1, len(height)):
temp = 0
w = j - i
if height[i] <= height[j]:
temp = height[i] * w
else:
temp = height[j] * w
if temp >= result:
result = temp
return result
Reference
この問題について(Week 2), 我々は、より多くの情報をここで見つけました https://velog.io/@15_hwukjunwoo/Week-2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol