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

《代码随想录》刷题记录

https://github.com/youngyangyang04/leetcode-master/tree/master

数组:704.二分查找

数组 分治

递归版本,实际上可以写迭代版本的

class Solution:def search(self, nums: List[int], target: int) -> int:return self.binary_search(nums, 0, len(nums) - 1, target)def binary_search(self, nums, left, right, target):if left > right or right < left:return -1mid = (left + right) // 2if target == nums[mid]:return midelif target < nums[mid]:return self.binary_search(nums, left, mid - 1, target)else:return self.binary_search(nums, mid + 1, right, target)

数组:27.移除元素

数组 双指针

class Solution:def removeElement(self, nums: List[int], val: int) -> int:if not nums:return 0left, right = 0, len(nums) - 1if left == right:return left - (nums[left] == val) + 1while left < right:if nums[left] !=val:left += 1elif nums[right] == val:right -= 1else:nums[left], nums[right] = nums[right], nums[left]left += 1right -= 1return left - (nums[left] == val) + 1

数组:977.有序数组的平方

数组 双指针

class Solution:def sortedSquares(self, nums: List[int]) -> List[int]:# 若所有为正数,正序平方返回,负数,逆序平方返回# 正负均有,找到边界,对比绝对值返回if len(nums) == 1:return [nums[0] * nums[0]]if nums[0] <= 0 and nums[-1] <= 0:res = []for i in range(len(nums) - 1, -1, -1):res.append(nums[i] * nums[i])return reselif nums[0] >= 0 and nums[-1] >= 0:return [n * n for n in nums]else:i = 0while i < len(nums):if nums[i] >= 0:i -= 1breaki += 1j = i + 1res = []while i >= 0 or j < len(nums):if i >= 0 and j < len(nums):if nums[i] * nums[i] > nums[j] * nums[j]:res.append(nums[j] * nums[j])j += 1else:res.append(nums[i] * nums[i])i -= 1elif i >= 0:res.append(nums[i] * nums[i])i -= 1else:res.append(nums[j] * nums[j])j += 1return res

数组:209.长度最小的子数组

数组 滑动窗口

class Solution:def minSubArrayLen(self, target: int, nums: List[int]) -> int:l = len(nums) + 1sumary = nums[0]left = right = 0while -1 < left <= right < len(nums):if sumary >= target:l = min(l, right - left + 1)left += 1if left <= right:sumary -= nums[left - 1]else:breakelse:right += 1if right < len(nums):sumary += nums[right]else:breakif l > len(nums):return 0else:return l

数组:区间和

前缀和

n = 0
nums = []
questions = []try:n = int(input())for _ in range(n):nums.append(int(input()))while True:r = input().split(" ")questions.append((int(r[0]), int(r[1])))except EOFError:passprefix_sum = [0] * len(nums)
for i in range(1, len(nums)):prefix_sum[i] = prefix_sum[i - 1] + nums[i - 1]for a, b in questions:print(prefix_sum[b] - prefix_sum[a] + nums[b])

数组:开发商购买土地

数组 前缀和

数组:螺旋矩阵

数组 模拟

特别注意矩形情况最内圈的边界条件

class Solution:def spiralOrder(self, matrix: List[List[int]]) -> List[int]:res = []m, n = len(matrix), len(matrix[0])c = min(math.ceil(m / 2), math.ceil(n / 2))for i in range(c):x, y = i, i - 1y += 1if not (y < n - i):return reswhile y < n - i:res.append(matrix[x][y])y += 1y -= 1x += 1if not (x < m - i):return reswhile x < m - i:res.append(matrix[x][y])x += 1x -= 1y -= 1if not (y > i - 1):return reswhile y > i - 1:res.append(matrix[x][y])y -= 1y += 1x -= 1if not (x > i):return reswhile x > i:res.append(matrix[x][y])x -= 1return res
http://www.dtcms.com/a/300256.html

相关文章:

  • 速通python加密之MD5加密
  • Datawhale AI 夏令营:让AI理解列车排期表 Notebook(Baseline拆解)
  • JVM常见工具
  • Java 对象秒变 Map:字段自由伸缩的优雅实现
  • KTO:基于行为经济学的大模型对齐新范式——原理、应用与性能突破
  • 2025测绘程序设计国赛实战 | 基于统计滤波算法的点云去噪
  • 使用binutils工具分析目标文件(贰)
  • U514565 连通块中点的数量
  • 缓存一致性:从单核到异构多核的演进之路
  • HarmonyOS中的PX、 VP、 FP 、LPX、Percentage、Resource 详细区别是什么
  • HCIP--MGRE实验
  • CT、IT、ICT 和 DICT区别
  • Windows卷影复制的增量备份
  • 在VS Code中运行Python:基于Anaconda环境或Python官方环境
  • 人大金仓 kingbase 连接数太多, 清理数据库连接数
  • Go的内存管理和垃圾回收
  • “Datawhale AI夏令营”「结构化数据的用户意图理解和知识问答挑战赛」1
  • 使用Clion开发STM32(Dap调试)
  • 基于华为ENSP的OSPF数据报文保姆级别详解(3)
  • LeetCode——1695. 删除子数组的最大得分
  • TI MSPM0蓝牙串口通信数据包制作
  • C++11 -- emplace、包装器
  • 标准库开发和寄存器开发的区别
  • nfls dp 刷题 题解
  • AutoCAD_2025下载与保姆级安装教程
  • 【安全漏洞】防范未然:如何有效关闭不必要的HTTP请求方法,保护你的Web应用
  • cursor使用方法
  • MGER作业
  • Python 面向对象基础
  • 26考研英语词汇的逻辑笔记