东莞 网站 建设 物流,wordpress 回到首页,专做奢侈品品牌的网站,如何给wordpress写权限1、删除链表的倒数第 N 个结点#xff08;链表#xff0c;双指针#xff09;
给你一个链表#xff0c;删除链表的倒数第 n 个结点#xff0c;并且返回链表的头结点。
进阶#xff1a;你能尝试使用一趟扫描实现吗#xff1f; 示例 1#xff1a; 输入#xff1a;head …1、删除链表的倒数第 N 个结点链表双指针
给你一个链表删除链表的倒数第 n 个结点并且返回链表的头结点。
进阶你能尝试使用一趟扫描实现吗 示例 1 输入head [1,2,3,4,5], n 2输出[1,2,3,5]
示例 2
输入head [1], n 1输出[]
示例 3
输入head [1,2], n 1输出[1] 提示
链表中结点的数目为 sz1 sz 300 Node.val 1001 n sz
选项代码
class ListNode:def __init__(self, val0, nextNone):self.val valself.next next
class LinkList:def __init__(self):self.headNonedef initList(self, data):self.head ListNode(data[0])rself.headp self.headfor i in data[1:]:node ListNode(i)p.next nodep p.nextreturn rdef convert_list(self,head):ret []if head None:returnnode headwhile node ! None:ret.append(node.val)node node.nextreturn ret
class Solution:def removeNthFromEnd(self, head: ListNode, n: int) - ListNode:v ListNode(0, head)handle vindex []while v is not None:index.append(v)v v.nextpre len(index)-n-1next len(index)-n1index[pre].next index[next] if next 0 and next len(index) else Nonereturn handle.next
# %%
l LinkList()
list1 [1,2,3,4,5]
head l.initList(list1)
n 2
s Solution()
print(l.convert_list(s.removeNthFromEnd(head, n)))2、下一个排列数组双指针
实现获取 下一个排列 的函数算法需要将给定数字序列重新排列成字典序中下一个更大的排列。
如果不存在下一个更大的排列则将数字重新排列成最小的排列即升序排列。
必须 原地 (https://baike.baidu.com/item/%E5%8E%9F%E5%9C%B0%E7%AE%97%E6%B3%95)修改只允许使用额外常数空间。 示例 1
输入nums [1,2,3]输出[1,3,2]
示例 2
输入nums [3,2,1]输出[1,2,3]
示例 3
输入nums [1,1,5]输出[1,5,1]
示例 4
输入nums [1]输出[1] 提示
1 nums.length 1000 nums[i] 100
选项代码
class Solution(object):def nextPermutation(self, nums):ls len(nums)if ls 1:returnpair []for i in range(ls):for j in range(i 1, ls):if nums[i] nums[j]:pair.append([i,j])pos 0if len(pair) 0:self.swap(nums, pair[-1][0], pair[-1][1])pos pair[-1][0] 1for i in range(pos, ls):for j in range(i 1, ls):if nums[i] nums[j]:self.swap(nums, i, j)return numsdef swap(self, nums, index1, index2):if index1 index2:returnnums[index1], nums[index2] nums[index2], nums[index1]
# %%
s Solution()
print(s.nextPermutation(nums [1,2,3]))3、迷宫问题需要用递归图算法
贡献者adsls630ef
问题描述一只老鼠在一个n×n迷宫的入口处它想要吃迷宫出口处放着奶酪问这只老鼠能否吃到奶酪如果可以吃到请给出一条从入口到奶酪的路径。 思考解决问题之前我们首先要做的就是仔细研究问题找出问题的已知条件和要得到的是什么。和解数学问题、物理问题一样要先弄懂问题。那么老鼠走迷宫问题的已知条件有什么呢 数学模型重新定义问题 问题问老鼠能否吃到奶酪就是问能否找到一条从迷宫入口到出口的路径。如果不能找到那么老鼠就吃不到奶酪如果能够找到那么就给出这条路径。 观察10×10的迷宫。这个迷宫其实是由10×10100个格子组成的其中绿色格子代表墙白色格子代表路如图1所示。“绿色格子代表墙白色格子代表路”是用语言形式描述的需要转换成数学的形式。用1和0分别定义绿色格子和白色格子可以得到如图2的迷宫。 将上面10×10的迷宫定义为如下的二维数组即 m[10][10][1,1,1,0,1,1,1,1,1,1, 1,0,0,0,0,0,0,0,1,1, 1,0,1,1,1,1,1,0,0,1, 1,0,1,0,0,0,0,1,0,1, 1,0,1,0,1,1,0,0,0,1, 1,0,0,1,1,0,1,0,1,1, 1,1,1,1,0,0,0,0,1,1, 1,0,0,0,0,1,1,1,0,0, 1,0,1,1,0,0,0,0,0,1, 1,1,1,1,1,1,1,1,1,1] 有了对迷宫的数学定义就可以很简单的定义迷宫的入口和出口了。迷宫的入口是m[0][3]出口是m[7][9]。老鼠走迷宫问题就是要找一条从入口到出口的路径如果存在就返回这条路径如果不存在就返回不存在这种路径。也就是说要在二维数组m中找一条从m[0][3]到m[7][9]全部为0的路径。 请使用递归解决迷宫路径查找问题。
以下程序实现了这一功能请你填补空白处内容
def maze(m, n, route, pos, export):走迷宫m - 迷宫数组列表n - 迷宫阶数route - 可能的路线列表pos - 当前位置元组export - 出口位置元组route.append(pos)if pos export:print(route)if pos[0] 0 and m[pos[0]-1][pos[1]] 0 and (pos[0]-1,pos[1]) not in route:maze(m, n, route[:], (pos[0]-1,pos[1]), export)if pos[0] n-1 and m[pos[0]1][pos[1]] 0 and (pos[0]1,pos[1]) not in route:maze(m, n, route[:], (pos[0]1,pos[1]), export)if pos[1] 0 and m[pos[0]][pos[1]-1] 0 and (pos[0],pos[1]-1) not in route:maze(m, n, route[:], (pos[0],pos[1]-1), export)________________________________;
m [[1,1,1,0,1,1,1,1,1,1], [1,0,0,0,0,0,0,0,1,1], [1,0,1,1,1,1,1,0,0,1], [1,0,1,0,0,0,0,1,0,1], [1,0,1,0,1,1,0,0,0,1], [1,0,0,1,1,0,1,0,1,1], [1,1,1,1,0,0,0,0,1,1], [1,0,0,0,0,1,1,1,0,0], [1,0,1,1,0,0,0,0,0,1], [1,1,1,1,1,1,1,1,1,1]
]
maze(m, len(m), list(), (0,3), (7,9))选项代码
if pos[1] n - 1 and m[pos[0]][pos[1] 1] 0 and (pos[0], pos[1] 1) not in route:maze(m, n, route[:], (pos[0], pos[1] 1), export)