Skip to content

Commit 7f4aa4c

Browse files
authored
Add files via upload
1 parent 7ce6c8a commit 7f4aa4c

10 files changed

+126
-0
lines changed

leetcode/400.第N个数字.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
class Solution(object):
2+
def findNthDigit(self, n):
3+
# 数字位数
4+
digit = 1
5+
while 1:
6+
# 不同位数的第一个整数
7+
first = 10**(digit-1)
8+
# 该位数里的数字个数
9+
cur = 9 * first * digit
10+
if cur >= n:
11+
# str(first+(n-1)/digit) 获取第n个数所在的整数,(n-1)%digit获取该整数的哪个数
12+
return int(str(first + (n-1)/digit)[(n-1) % digit])
13+
# 减去不符合的前cur个数,从更长位数开始判断
14+
n -= cur
15+
digit += 1

leetcode/458.可怜的小猪.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# n维空间定义坐标:按查找时间1h,猪15分钟内死去计算,1只猪最多可检测5只桶,2只猪最多可检测25只桶...
2+
class Solution(object):
3+
def poorPigs(self, buckets, minutesToDie, minutesToTest):
4+
# 一只猪在实验时间内最多可检测水桶数量
5+
times = minutesToTest/minutesToDie+1
6+
num = 0
7+
while pow(times, num) < buckets:
8+
num += 1
9+
return num
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# 先用字典存放nums中每个元素后第一个比它大的值,再遍历findNums的元素从字典获取该值
2+
class Solution(object):
3+
def nextGreaterElement(self, findNums, nums):
4+
l = []
5+
d = {}
6+
for num in nums:
7+
while l and l[-1] < num:
8+
d[l.pop()] = num
9+
l.append(num)
10+
for i in range(len(findNums)):
11+
findNums[i] = d.get(findNums[i], -1)
12+
return findNums

leetcode/594.最长和谐子序列.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# 相邻两个元素的出现次数最大和即为最长和谐子序列
2+
class Solution(object):
3+
def findLHS(self, nums):
4+
d = collections.Counter(nums)
5+
l = sorted(list(set(nums)))
6+
count = 0
7+
for i in range(len(l)-1):
8+
if l[i]+1 == l[i+1] and d[l[i]] + d[l[i+1]] > count:
9+
count = d[l[i]] + d[l[i+1]]
10+
return count

leetcode/682.棒球比赛.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# 用数组添加、删除数据即可,最后求和
2+
class Solution(object):
3+
def calPoints(self, ops):
4+
res = []
5+
for op in ops:
6+
if op == '+':
7+
res.append(res[-1] + res[-2])
8+
elif op == 'D':
9+
res.append(res[-1] * 2)
10+
elif op == 'C':
11+
res.remove(res[-1])
12+
else:
13+
res.append(int(op))
14+
return sum(res)

leetcode/690.员工的重要性.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# 先用字典存放员工id与员工信息,再将所求员工信息添加到数组中,将重要性累加,并加直系员工信息添加到数组中,循环处理数组
2+
class Solution(object):
3+
def getImportance(self, employees, id):
4+
d = {e.id:e for e in employees}
5+
res = 0
6+
q = []
7+
q.append(d[id])
8+
while q:
9+
cur = q.pop(0)
10+
res += cur.importance
11+
for i in cur.subordinates:
12+
q.append(d[i])
13+
return res

leetcode/811.子域名访问计数.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
class Solution(object):
2+
def subdomainVisits(self, cpdomains):
3+
d = {}
4+
for i in cpdomains:
5+
# 先切分并保存最低一级域名与次数
6+
res = i.split()
7+
num = int(res[0])
8+
addr = res[1]
9+
if addr in d:
10+
d[addr] += num
11+
else:
12+
d[addr] = num
13+
# 再保存父域名和顶级域名的访问次数
14+
while '.' in addr:
15+
addr = addr[addr.index('.')+1:]
16+
if addr in d:
17+
d[addr] += num
18+
else:
19+
d[addr] = num
20+
return [str(d[key]) + ' ' + key for key in d]

leetcode/812.最大三角形面积.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# 三角形面积公式 S=(1/2)*(x1y2+x2y3+x3y1-x1y3-x2y1-x3y2)
2+
class Solution(object):
3+
def largestTriangleArea(self, points):
4+
res = 0
5+
for x in points:
6+
for y in points:
7+
for z in points:
8+
res = max(res, 0.5*(x[0]*y[1] + y[0]*z[1] + z[0]*x[1]- x[0]*z[1] - y[0]*x[1] - z[0]*y[1]));
9+
return res

leetcode/944.删列造序.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# 将A数组解压,遍历解压列表,若元组非降序排列,则需要删除一个索引
2+
class Solution(object):
3+
def minDeletionSize(self, A):
4+
res = 0
5+
for i in zip(*A):
6+
if list(i) != sorted(i):
7+
res += 1
8+
return res

leetcode/961.重复 N 次的元素.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# 方法一:遍历集合,边统计元素的个数
2+
class Solution(object):
3+
def repeatedNTimes(self, A):
4+
n = len(A)/2
5+
for i in A:
6+
if A.count(i) == n:
7+
return i
8+
9+
# 方法二:利用字典存放字符与对应个数
10+
class Solution(object):
11+
def repeatedNTimes(self, A):
12+
d = collections.Counter(A)
13+
n = len(A)/2
14+
for i in set(A):
15+
if d[i] == n:
16+
return i

0 commit comments

Comments
 (0)