当前位置: 首页 > news >正文

算法训练第二天

209. 长度最小的子数组

思路:

这道题原本想用后缀和。但是超时了。只能用双指针模拟一个滑动窗口并用一个变量sum去记录窗口内的和。

代码:

class Solution:def minSubArrayLen(self, target: int, nums: List[int]) -> int:min_len = 0x3f3f3f3fsum = 0i = 0for j in range(0, len(nums)):sum += nums[j]while sum >= target:cur_len = j - i + 1min_len = min(min_len, cur_len)sum -= nums[i]i += 1return min_len if min_len != 0x3f3f3f3f else 0

59. 螺旋矩阵 II

思路:

很简单的一道模拟类的题目,只需要想清楚填充的区间即可。

代码:

class Solution(object):def generateMatrix(self, n):""":type n: int:rtype: List[List[int]]"""arr = [[0 for h in range(0,n)] for i in range(0,n)]i = 0j = 0this_num = 1while this_num <=n*n:while j<n and arr[i][j]==0:arr[i][j] = this_numj+=1this_num+=1j-=1i+=1while i<n and arr[i][j]==0:arr[i][j] = this_numi += 1this_num += 1i-=1j-=1while j>=0 and arr[i][j]==0:arr[i][j] = this_numj -= 1this_num += 1j+=1i-=1while i>=0 and arr[i][j]==0:arr[i][j] = this_numi -= 1this_num += 1i+=1j+=1return arr

58. 区间和

思路:

经典的前缀和算法应用。

代码:

import sysdef main():num = int(int(sys.stdin.readline()))arr = [int(int(sys.stdin.readline())) for i in range(num)]arr1 = arr.copy()for i in range(1,num):arr1[i] += arr1[i-1]for line in sys.stdin:a, b = map(int, line.strip().split())print(arr1[b]-arr1[a]+arr[a])if __name__ == '__main__':main()

相关文章:

  • FEMFAT许可的有效期限
  • “谁能进,谁不能进?”——用NAC精准控制网络访问
  • 痉挛性斜颈的健康护理要点:从日常管理到康复辅助
  • CSS--background-repeat详解
  • 【第4章 图像与视频】4.4 离屏 canvas
  • 手机实名认证接口如何用C#进行调用?
  • Linux环境下多进程Socket通信实现
  • 学习路之PHP--easyswoole操作数据库
  • 性能测试工具选型指南
  • UNICEODE_STRING
  • 【Markdown基础语法】
  • Oracle/openGauss中,DATE/TIMESTAMP与数字日期/字符日期比较
  • 黑马点评项目02——商户查询缓存(缓存穿透、缓存雪崩、缓存击穿)以及细节
  • 解析C++排序算法
  • vue-seamless-scroll 结束从头开始,加延时后滚动
  • 影楼精修-AI追色算法解析
  • 定点小数 不需要指数部分 不采用移码
  • 网络渗透基础:信息收集
  • Animate CC CreateJS 技术50道测试题目
  • Python应用while嵌套循环
  • 做3d模型的叫什么牛的网站/太原seo排名公司
  • 哪个网站专门做代购/鸡西网站seo
  • 做网站的哪家公司好/我有广告位怎么找客户
  • 做企业网站报价/长沙seo平台
  • 经常浏览不良网站会被记录吗/搜易网托管模式的特点
  • 南宁优化网站网络服务/seo jsbapp9