suibian

链接:https://www.nowcoder.com/questionTerminal/fc72d3493d7e4be883e931d507352a4a?f=discussion
来源:牛客网

定义一个方向数组
1
char[] direction = new char[] {'E', 'S', 'W', 'N', 'E', 'S', 'W'};
然后分别计算Left和Right的步数,并将其%4,最后direction[3 + (countRight - countLeft)]就是所求方向。

n = int(input())
dir = input()
s = ['N','E','S','W']
s1 = ['N','W','S','E']
if n>0:
    L=0
    R=0
    for i in dir:
        if i == "L":
            L += 1
        else:
            R += 1
    if R - L >= 0:
        print(s[(R-L)%4])
    else:
        print(s1[(L-R)%4])
else:
    print('N')

链接:https://www.nowcoder.com/questionTerminal/bac5a2372e204b2ab04cc437db76dc4f?f=discussion
来源:牛客网

朴素的做法是枚举n^2个点然后跟k作比较。这显然对n<=100000的规模来说是不允许通过的。
注意到当除数是y时,当x=1 to n时,余数是1,2,3,...,y-1,0循环出现,循环节长度显然是y
那么我们可以枚举y=k to n(当y<k时所有余数均小于k,因此不需要考虑)
然后对于x=1~n,总共出现了[n/y]个循环节,然后数出每个循环节里面不小于k的余数。最后再数出不满一个循环节的不小于k的余数,就是答案了。注意当k=0的时候由于余数0出现在循环的末尾,因此要特别判断。
复杂度为O(n)

temp = list(map(int, input().split()))
n = temp[0]
k = temp[1]
if k == 0:
    ans = n * n  # k=0是比较特殊的
else:
    ans = 0
    for y in range(k + 1, n + 1):
        # 从每一列来看,根据每y个一个循环的规律,快速计算余数矩阵余数值
        # cycle = [i for i in range(1, y)] + [0]  # 循环部分
        satisfy_num = y - k  # 一个循环中满足的组合个数
        cycle_num = n // y  # 完整循环个数
        res_num = n % y  # 剩余不完整部分循环中的元素个数
        ans += satisfy_num * cycle_num + max(res_num - k + 1, 0)  # 注意这里最差就是不完整部分满足个数为0,但是不能为负数
print(ans)

ss

l,r = list(map(int,input().split()))
def not_in_1_to_x(x):#close 1 to 4 has two
    return (x+2)//3
print(r-l+1-not_in_1_to_x(r)+not_in_1_to_x(l-1)) #l-1

上式

import sys
import bisect
task = {}
lines = sys.stdin.readlines()
n, m = map(int, lines[0].strip().split()) 
for line in lines[1:-1]:
    if not line.strip().split(): 
        continue
    a, b = map(int, line.strip().split())
    task[a] = max(task.get(a, 0), b)
arr = sorted(task.keys())
for i in range(1, len(arr)):
    if task[arr[i]] < task[arr[i -1]]:
        task[arr[i]] = task[arr[i -1]]
skills = map(int, lines[-1].strip().split())
for skill in skills:
    if skill in task:
        print(task[skill])
    else:
        ind = bisect.bisect(arr, skill)
        if ind == 0:
            print(0)
        else:
            print(task[arr[ind -1]])

python 字典(Dictionary) get() 函数返回指定键的值,如果值不在字典中返回默认值。
for i in range(n_job):
diff,wage = list(map(int,input().strip().split()))
diff_to_wage[diff] = max(diff_to_wage.get(diff,0),wage)

import bisect
n_job,m = list(map(int,input().strip().split()))
diff_to_wage = {}
i = 0
while i < n_job:
    *** = list(map(int,input().strip().split()))
    if ***:
        diff,wage = ***
        diff_to_wage[diff] = max(diff_to_wage.get(diff,0),wage)
        i+=1
powers = []
while not powers:
    powers = list(map(int,input().strip().split())) #*** again!!
keys = sorted(diff_to_wage.keys())
for i in range(1,len(keys)):
    if diff_to_wage[keys[i]] < diff_to_wage[keys[i-1]]:
        diff_to_wage[keys[i]] = diff_to_wage[keys[i-1]]
for power in powers:
    if power in diff_to_wage: #in key time out 40%
        print(diff_to_wage[power])
    else:
        ind = bisect.bisect(keys,power)
        if not ind:
            print(0)
        else:
            print(diff_to_wage[keys[ind-1]])

gg

n = int(input())
dir_str = input()
L,R=0,0
L4 = ['N','W','S','E']
R4 = ['N','E','S','W']
for ch in dir_str:
    if ch == "L":
        L+=1
    else:
        R+=1
if L>R:
    print(L4[(L-R)%4])
else:
    print(R4[(R-L)%4])

count()方法语法:

str.count(sub, start= 0,end=len(string))
参数
sub -- 搜索的子字符串
start -- 字符串开始搜索的位置。默认为第一个字符,第一个字符索引值为0。
end -- 字符串中结束搜索的位置。字符中第一个字符的索引为 0。默认为字符串的最后一个位置。

n = int(input())
dir_str = input()
L,R=0,0
L4 = ['N','W','S','E']
R4 = ['N','E','S','W']
L = dir_str.count('L')
R = dir_str.count('R')
if L>R:
    print(L4[(L-R)%4])
else:
    print(R4[(R-L)%4])

路灯

if __name__ == '__main__':
    count = int(input())  # 测试用例的个数
    n = []
    lantern = []
    for i in range(count):
        n_tmp = int(input())  # 路灯个数
        n.append(n_tmp)
        lantern_tmp = input()  # 路灯分布字符串
        lantern.append(lantern_tmp)
    lantern_count = [0 for i in range(count)]  # 存储最终结果的数组
    for i in range(len(lantern)):  # 循环路灯数
        j = 0
        while (j < len(lantern[i])):  # 循环对应路灯排列字符串
            if lantern[i][j] == '.':
                j += 3
                lantern_count[i] += 1
            else:
                j += 1
    print(lantern_count[0])
    for i in range(len(lantern_count) - 1):
        print(lantern_count[i + 1])

2019年10月14日22:22:01
查找最晚入职员工的所有信息

select *
from employees
where hire_date = (select max(hire_date) from employees )

select *
from employees
where hire_date = (select max(hire_date) from employees)

查找入职员工时间排名倒数第三的员工所有信息
LIMIT m,n : 表示从第m+1条开始,取n条数据;
LIMIT n : 表示从第0条开始,取n条数据,是limit(0,n)的缩写。

select *
from employees
where hire_date = (
select distinct hire_date 
from employees 
order by hire_date 
desc limit 2,1
)
全部评论

相关推荐

牛客717484937号:双飞硕没实习挺要命的
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务