训练营Day2| 前缀和 滑动窗口

滑动窗口

思路: 加一个右侧的item,试图删除最多的左侧item

res+=nums[right]
if res<target:
	right+=1
else:
	while res>=target:
	  res-=nums[left]
	  left+=1
	  leng = min(leng,right-left+2)
	  right+=1

螺旋矩阵

思路: 一圈一圈遍历。每一圈的遍历可以通过 startPoint 和边长唯一确定。

curLen = n-1
count=0
num=1
while curLen>0:
  startI,startJ=count,count
  for i in range(curLen):
	res[startI][startJ+i]=num
	num+=1

开发商购买土地

思路: 前缀和预处理。一共有(n-1)+(m-1)种分法。提前通过前缀和预处理好数字然后遍历所有分法就可以。

[n, m] = [int(c) for c in input().split()]
res = [0]*n
for i in range(n):
    res[i] = [int(c) for c in input().split()]

def getSumPeri(res):
    sumPeri = [0]*n
    for i in range(n):
        if i >0:
            sumPeri[i]+=sumPeri[i-1]
        for j in range(m):
            sumPeri[i]+=res[i][j]
    return sumPeri
def getSumPerj(res):
    sumPerj=[0]*m 
    for j in range(m):
        if j>0:
            sumPerj[j]+=sumPerj[j-1]
        for i in range(n):
            sumPerj[j]+=res[i][j]
    return sumPerj
def solve(sumPeri,sumPerj):
    minCount = float('inf')
    for i in range(n):
        minCount=min(minCount,abs(sumPeri[-1]-2*sumPeri[i]))
    for j in range(m):
        minCount=min(minCount,abs(sumPerj[-1]-2*sumPerj[j]))
    return minCount

全部评论

相关推荐

程序员牛肉:主要是因为小厂的资金本来就很吃紧,所以更喜欢有实习经历的同学。来了就能上手。 而大厂因为钱多,实习生一天三四百的就不算事。所以愿意培养你,在面试的时候也就不在乎你有没有实习(除非是同级别大厂的实习。) 按照你的简历来看,同质化太严重了。项目也很烂大街。 要么换项目,要么考研。 你现在选择工作的话,前景不是很好了。
点赞 评论 收藏
分享
05-12 11:09
已编辑
门头沟学院 后端
已注销:没必要放这么多专业技能的描述。这些应该是默认已会的,写这么多行感觉在凑内容。项目这块感觉再包装包装吧,换个名字,虽然大家的项目基本都是网上套壳的,但是你这也太明显了。放一个业务项目,再放一个技术项目。技术项目,例如中间件的一些扩展和尝试。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务