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

力扣题51~55

题51(困难):

分析:

递归金典题:N皇后问题,搞过扫雷游戏就很简单了

python代码:

class Solution:def solveNQueens(self, n: int) -> List[List[str]]:#n 皇后问题--》非线性--》选递归,res=[]queue_count=n#设置皇后,递归函数,传当前可行位置+放置第几个def set_queue(free_queue,queue_board,n):if n<=0 or n>queue_count:returnif n==queue_count:#放置第九个皇后if 1 not in free_queue[n-1]:returnelse:for i in range(queue_count):if free_queue[n-1][i]==1:queue_board[n-1][i]='Q'res.append([''.join(i.copy()) for i in queue_board])queue_board[n-1][i]='.'returnelse:for i in range(queue_count):if free_queue[n-1][i]==1:free_queue_new = [i.copy() for i in free_queue]queue_board_new = [i.copy() for i in queue_board]queue_board_new[n-1][i]='Q'for m in range(queue_count-n):#设置纵列为0free_queue_new[n+m][i]=0#设置横列为0(要不要无所谓)if i+m+1<queue_count:free_queue_new[n-1][i+m+1]=0#设置斜率为1的列为0if n+m<queue_count and i+m+1<queue_count:free_queue_new[n+m][i+m+1]=0#设置斜率为-1的列为0if n+m<queue_count and i-m-1>=0:free_queue_new[n+m][i-m-1]=0set_queue(free_queue_new,queue_board_new,n+1)returnfree_queue=[[1 for i in range(queue_count)] for j in range(queue_count)]queue_board=[['.' for i in range(queue_count)] for j in range(queue_count)]set_queue(free_queue,queue_board,1)return res

题52(困难):

分析:

解决了上一题,这题就是送啊

python代码:

class Solution:def totalNQueens(self, n: int) -> int:#n 皇后问题--》非线性--》选递归,res=[]queue_count=n#设置皇后,递归函数,传当前可行位置+放置第几个def set_queue(free_queue,queue_board,n):if n<=0 or n>queue_count:returnif n==queue_count:#放置第九个皇后if 1 not in free_queue[n-1]:returnelse:for i in range(queue_count):if free_queue[n-1][i]==1:queue_board[n-1][i]='Q'res.append([''.join(i.copy()) for i in queue_board])queue_board[n-1][i]='.'returnelse:for i in range(queue_count):if free_queue[n-1][i]==1:free_queue_new = [i.copy() for i in free_queue]queue_board_new = [i.copy() for i in queue_board]queue_board_new[n-1][i]='Q'for m in range(queue_count-n):#设置纵列为0free_queue_new[n+m][i]=0#设置横列为0(要不要无所谓)if i+m+1<queue_count:free_queue_new[n-1][i+m+1]=0#设置斜率为1的列为0if n+m<queue_count and i+m+1<queue_count:free_queue_new[n+m][i+m+1]=0#设置斜率为-1的列为0if n+m<queue_count and i-m-1>=0:free_queue_new[n+m][i-m-1]=0set_queue(free_queue_new,queue_board_new,n+1)returnfree_queue=[[1 for i in range(queue_count)] for j in range(queue_count)]queue_board=[['.' for i in range(queue_count)] for j in range(queue_count)]set_queue(free_queue,queue_board,1)return len(res)

题53(中等):

分析:

python代码:

class Solution:def maxSubArray(self, nums: List[int]) -> int:#不用看也是动态规划啊,每一个现状等于之前状态加判断res=0n_len=len(nums)n_list=[0 for i in range(n_len)]for i in range(n_len):n_list[i]=max(nums[i],n_list[i-1]+nums[i])res=max(n_list)return res

题54(中等):

分析:

会搞贪吃蛇小游戏的一个很清晰怎么搞

python代码:

class Solution:def spiralOrder(self, matrix: List[List[int]]) -> List[int]:row=len(matrix)col=len(matrix[0])cout=row*colres=[]#选则x,y作为当前位置x,y=0,0#和贪吃蛇一样选则p_x,p_y作为前进的方向p_x,p_y=1,0#定义终止转弯点left,right,top,bottom=0,col-1,0,row-1i=0while i<cout:res.append(matrix[y][x])if x==right and y==top:#到右上if p_x==1:top+=1p_x,p_y=0,1passif x==right and y==bottom:#到右下if p_y==1:right-=1p_x,p_y=-1,0passif x==left and y==top:#到左上if p_y==-1:left += 1p_x,p_y=1,0passif x==left and y==bottom:#到左下if p_x==-1:bottom-=1p_x,p_y=0,-1passx+=p_xy+=p_yi+=1return res

题55(中等):

分析:

之前没想到贪心,这次直接用贪心算法,(因为动态规划为n^2,时间复杂度高)

python代码:

class Solution:def canJump(self, nums: List[int]) -> bool:n_len=len(nums)end,max_jump=0,0for i in range(n_len):if i>end:return Falsemax_jump=max(max_jump,i+nums[i])if max_jump>=n_len-1:return Trueif i==end:end=max_jump


http://www.mrgr.cn/news/51770.html

相关文章:

  • 基于SpringBoot农场管理平台【附源码】
  • C++系统教程005-数据类型04-(数据的输入与输出)
  • 数据类型转换
  • STM32CUBEIDE安装教程
  • 数据结构——顺序表的基本操作
  • 为Vision Pro和空间计算新手打造:通过Siri交互3D模型的练手项目
  • 区间动态规划
  • docker环境安装mongoDB实现平滑迁移实战
  • 曲线的弧长与曲率
  • 防范.hma11ox勒索病毒:加强安全意识,守护数据安全
  • 【论文速看】DL最新进展20241016-低光增强、自动驾驶、图像分割、Diffusion
  • .baxia勒索病毒肆虐:如何保护你的数据安全?
  • PythonExcel批量pingIP地址
  • 基于web的电商后台管理系统的设计与实现
  • 第二十一节 图像旋转
  • 卡码网KamaCoder 96. 城市间货物运输 III
  • Vite创建Vue3项目以及Vue3相关基础知识
  • 深入理解队列(Queue)的实现(纯小白进)
  • Django开发流程
  • 用docker安装的mongo使用mongodump可以正常执行,但是在生成目录下找不到生成的文件