算法与数据结构
吾心0218
一位不断探索自己道路的求道者
展开
-
leetcode25. K 个一组翻转链表
给你一个链表,每k个节点一组进行翻转,请你返回翻转后的链表。k是一个正整数,它的值小于或等于链表的长度。如果节点总数不是k的整数倍,那么请将最后剩余的节点保持原有顺序。示例:给你这个链表:1->2->3->4->5当k= 2 时,应当返回: 2->1->4->3->5当k= 3 时,应当返回: 3->2->1->4->5来源:力扣(LeetCode)链接:https://lee...原创 2020-07-18 13:32:05 · 135 阅读 · 0 评论 -
运用递归解决二叉树问题
二叉树的最大深度给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solutio.原创 2020-06-29 16:37:30 · 225 阅读 · 0 评论 -
[剑指 Offer] 13. 机器人的运动范围
地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子?示例 1:输入:m = 2, n = 3, k = 1输出:3来源:力扣(LeetC.原创 2020-06-28 15:34:59 · 118 阅读 · 0 评论 -
leetcode 209. 长度最小的子数组
给定一个含有n个正整数的数组和一个正整数s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度。如果不存在符合条件的连续子数组,返回 0。示例:输入: s = 7, nums = [2,3,1,2,4,3]输出: 2解释: 子数组[4,3]是该条件下的长度最小的连续子数组。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/minimum-size-subarray-sum解题思路使用滑动窗口求解这道题...原创 2020-06-28 08:49:31 · 97 阅读 · 0 评论 -
全排列的生成
给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[ [1,1,2], [1,2,1], [2,1,1]]假设有n个数字,那么就有n个位置;n个位置依次进行选择,0位置有n种选法,1位置有n-1种选法,。。。n-1位置只有一种选法。class Solution: def permuteUnique(self, nums: List[int]) -> List[List[int]]: res = []原创 2020-06-27 17:39:32 · 93 阅读 · 0 评论 -
剑指 Offer 07 已知前序遍历和中序遍历的结果,请重建该二叉树 python
根据前序遍历的结果划分后序遍历结果为左右子树,递归实现。# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def buildTree(self, preorder: List[int], i原创 2020-06-26 14:56:34 · 135 阅读 · 0 评论 -
[剑指 Offer] 12. 矩阵中的路径 Golang
深度优先搜索,每次向上下左右四个方向搜索。func exist(board [][]byte, word string) bool { flag := make([][]byte,len(board)) for i:= range flag{ flag[i] = make([]byte,len(board[0])) } for i:= range board{ for j:= range board[0]{ if原创 2020-06-26 14:50:23 · 185 阅读 · 0 评论 -
[剑指 Offer] 38 字符串的排列
排列方案的生成方法: 根据字符串排列的特点,考虑深度优先搜索所有排列方案。即通过字符交换,先固定第 1位字符( n种情况)、再固定第2位字符( n−1 种情况)、... 、最后固定第 n位字符( 1种情况)。class Solution: def permutation(self, s: str) -> List[str]: s = [c for c in s] def backtrace(start): if start==...原创 2020-06-26 14:45:21 · 97 阅读 · 0 评论 -
剑指 Offer 32 从上到下打印二叉树
二叉树的层次遍历,借助一个队列,每次弹出队列的头节点,只要其子节点不为空,入队。# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def levelOrder(self, root: Tre原创 2020-06-26 14:40:37 · 140 阅读 · 0 评论