leetcode 31-40(2024.08.18)

server/2024/11/13 9:45:38/

立个flag,1-100题每天分配10题,不会就先空着(2,8)。

昨天周六,摆烂一天。

1. 31:下一个排列

python">class Solution:def nextPermutation(self, nums: List[int]) -> None:"""Do not return anything, modify nums in-place instead."""i = len(nums) - 1while i > 0:if nums[i - 1] < nums[i]:breakelse:i = i - 1if i == 0:nums.sort()else:idx1 = i - 1num1 = nums[idx1]i = len(nums) - 1while i > idx1:if nums[i] > num1:breakelse:i = i - 1idx2 = inum2 = nums[idx2]nums[idx1], nums[idx2] = num2, num1left = idx1 + 1right = len(nums) - 1while left < right:nums[left], nums[right] = nums[right], nums[left]left = left + 1right = right - 1

2. 32:最长有效括号

3. 33:搜索旋转排序数组

python">class Solution:def search(self, nums: List[int], target: int) -> int:left = 0right = len(nums) - 1while left <= right:mid = left + (right - left) // 2if nums[mid] == target:return midif nums[left] <= nums[mid]:if nums[left] <= target < nums[mid]:right = mid - 1else:left = mid + 1elif nums[left] > nums[mid]:if nums[mid] < target <= nums[right]:left = mid + 1else:right = mid - 1return -1

4. 34:在排序数组中查找元素的第一个和最后一个位置

python">class Solution:def searchRange(self, nums: List[int], target: int) -> List[int]:def searchLeft(nums, target):left = 0right = len(nums) - 1while left <= right:mid = left + (right - left) // 2if nums[mid] < target:left = mid + 1elif nums[mid] >= target:right = mid - 1if nums[left] == target:return leftelse:return -1def searchRight(nums, target):left = 0right = len(nums) - 1while left <= right:mid = left + (right - left) // 2if nums[mid] > target:right = mid - 1elif nums[mid] <= target:left = mid + 1if nums[right] == target:return rightelse:return -1if len(nums) == 0 or nums[0] > target or nums[-1] < target:return [-1, -1]else:left = searchLeft(nums, target)right = searchRight(nums, target)return [left, right]

5. 35:搜索插入位置

python">class Solution:def searchInsert(self, nums: List[int], target: int) -> int:left = 0right = len(nums) - 1while left <= right:mid = left + (right - left) // 2if nums[mid] == target:return midelif nums[mid] < target:left = mid + 1elif nums[mid] > target:right = mid - 1return left

6. 36:有效的数独

python">class Solution:def isValidSudoku(self, board: List[List[str]]) -> bool:hang = []lie = []gong = []for i in range(9):hang.append([])lie.append([])gong.append([])for i in range(9):for j in range(9):num = board[i][j]if num == ".":continueif num in hang[i] or num in lie[j] or num in gong[3 * (i // 3) + 1 * (j // 3)]:return Falsehang[i].append(num)lie[j].append(num)gong[3 * (i // 3) + 1 * (j // 3)].append(num)return True

7. 37:解数独

python">class Solution:def solveSudoku(self, board: List[List[str]]) -> None:"""Do not return anything, modify board in-place instead."""def isValid(board, i, j, n):for k in range(9):if n == board[k][j] or n == board[i][k]:return Falsestart_row = (i // 3) * 3start_col = (j // 3) * 3for i in range(start_row, start_row + 3):for j in range(start_col, start_col + 3):if n == board[i][j]:return Falsereturn Truedef backtracking(board):for i in range(9):for j in range(9):if board[i][j] != '.':continuefor num in range(1, 10):if isValid(board, i, j, str(num)):board[i][j] = str(num)if backtracking(board):return Trueboard[i][j] = '.'return Falsereturn Truebacktracking(board)

8. 38:外观数列

9. 39:组合总和

python">class Solution:def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:def backtracking(candidates, target, start, path, res):if sum(path) == target:res.append(path.copy())returnfor i in range(start, len(candidates)):if candidates[i] + sum(path) > target:breakpath.append(candidates[i])backtracking(candidates, target, i, path, res)path.pop()res = []path = []start = 0candidates.sort()backtracking(candidates, target, start, path, res)return res

10. 40:组合总和2

python">class Solution:def combinationSum2(self, candidates: List[int], target: int) -> List[List[int]]:def backtracking(candidates, target, start, path, res):if sum(path) == target:res.append(path.copy())returnfor i in range(start, len(candidates)):if i > start and candidates[i] == candidates[i - 1]:continueif candidates[i] + sum(path) > target:breakpath.append(candidates[i])backtracking(candidates, target, i + 1, path, res)path.pop()res = []path = []start = 0candidates.sort()backtracking(candidates, target, start, path, res)return res


http://www.ppmy.cn/server/102264.html

相关文章

SMS流媒体服务器-MPEG-PS流的深度解析

1.简介 ps流的解析&#xff0c;只要按照标准文档对照16进制的流数据&#xff0c;基本都能看的明白。但是实际项目中会碰到各种各样的问题。本文将对如何高效的解析出音视频数据发表一下个人的看法。 介绍一下本人的开源流媒体&#xff0c;点个star&#xff0c;有兴趣一起开发的…

深入探索Golang的hash包:哈希算法的高效实现

标题&#xff1a;深入探索Golang的hash包&#xff1a;哈希算法的高效实现 引言 Go语言&#xff0c;以其简洁的语法和高效的并发处理能力而广受开发者喜爱。在Go语言的标凈库中&#xff0c;hash包提供了一套强大的哈希算法实现&#xff0c;包括MD5、SHA1、SHA256等。本文将详细…

Unity | 游戏开发中的优化思维

目录 ​​​​​​一、优化三板斧&#xff1a; 第1步&#xff1a;定标准 第2步&#xff1a;重数据 第3步&#xff1a;严测试 二、流程和性能的优化 1.定标准&#xff1a; 2.重数据&#xff1a; 三、交互和表现的优化 1.卡顿和延迟 2.手感硬 四、沟通和学习 ​​​​…

DrissionPage自动化获取城市数据内容

一、获取页面内容 二、最终结果 上海市 约收录140个指标 查看98075次 人均GDP 153299元 公交车 17899辆 户籍人口 1469.3万人 三、代码 from DrissionPage._pages.chromium_page import ChromiumPage import time page ChromiumPage() page.get(https://www.swguancha.com/…

Taro+Vue 创建微信小程序

TaroVue 创建微信小程序 一、全局安装 tarojs/cli二、项目初始化三、现在去启动项目吧 一、全局安装 tarojs/cli npm install -g tarojs/cli //安装 npm info tarojs/cli //查看安装信息 如果正常显示版本说明成功了&#xff0c;就直接跳到第二步吧官网说&#xff1a;…

分布式知识总结(基本概念)

文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 基本概念 吞吐量 指系统在单位时间能够处理多少个请求 QPS 每秒…

小区社区超市商城停车场管理系统-计算机毕设Java|springboot实战项目

&#x1f34a;作者&#xff1a;计算机毕设匠心工作室 &#x1f34a;简介&#xff1a;毕业后就一直专业从事计算机软件程序开发&#xff0c;至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长&#xff1a;按照需求定制化开发项目…

09结构型设计模式——组合模式

一、组合模式的简介 组合模式&#xff08;Composite Pattern&#xff09;是一种结构型设计模式&#xff0c;主要用于处理树形结构中的对象组合问题。它允许你将对象组合成树形结构&#xff0c;以表示部分-整体层次结构。组合模式使得客户端能够统一地对待单个对象和对象组合&a…