楠君的小窝
LC1805. 字符串中不同整数的数目
题目 给你一个字符串 word ,该字符串由数字和小写英文字母组成。 请你用空格替换每个不是数字的字符。例如,“a123bc34d8ef34” 将会变成 " 123 34 8 34" 。注意,剩下的这些整数为(相邻彼此至少有一个空格隔开):“123”、“34”、“8” 和 “34” 。 返回对 word 完成替换后形成的 不同 整数的数目。 只有当两个整数的 不含前导零 的十进制表示不同, 才认为这两个整数也不同。 示例 1: 123输入:word = "a123bc34d8ef34"输出:3解释:不同的整数有 "123"、"34" 和 "8" 。注意,"34" 只计数一次。 示例 2: 12输入:word = "leet1234code234"输出:2 示例 3: 123输入:word = "a1b01c001"输出:1解释:"1"、"01" 和 "001" 视为 ...
golang切片
切片创建方法 1. 数组切片创建 12345678func main() { array := []int{0, 1, 2, 3, 4, 5} slice := array[2: 4] fmt.Println(array) fmt.Println(slice) // array -> [0, 1, 2, 3, 4, 5] // slice -> [2, 3]} 这里需要注意一下,go的切片与python不一样,[start: end]返回的是下标 array[start]到array[end-1]的元素. 不填start默认为0 不填end默认为数组长度+1 2. make内置函数创建 123456789func main() { slice := make([]int, 4, 10) fmt,Println(slice) // [0 0 0 0] slice[0] = 10 slice[1] = 20 fmt.Println(slice) // ...
LC1796. 字符串中第二大的数字
题目 给你一个混合字符串 s ,请你返回 s 中 第二大 的数字,如果不存在第二大的数字,请你返回 -1 。 混合字符串 由小写英文字母和数字组成。 示例 1: 123输入:s = "dfa12321afd"输出:2解释:出现在 s 中的数字包括 [1, 2, 3] 。第二大的数字是 2 。 示例 2: 123输入:s = "abc1111"输出:-1解释:出现在 s 中的数字只包含 [1] 。没有第二大的数字。 提示: 1 <= s.length <= 500 s 只包含小写英文字母和(或)数字。 解题思路 首先创建一个长度为2的数组,这里我取名nums 规定nums[0]为第一大的数,nums[1]为第二大的数 当遇到数字时: 大于nums[0],更新nums[0]为num,更新nums[1]为nums[0] 小于nums[0]大于nums[1]更新nums[1],因为此时数字为第二大数字. 代码 Python 1234567891011class Solution: def secondHighest(self, s ...
LC1769. 移动所有球到每个盒子所需的最小操作数
题目 有 n 个盒子。给你一个长度为 n 的二进制字符串 boxes ,其中 boxes[i] 的值为 ‘0’ 表示第 i 个盒子是 空 的,而 boxes[i] 的值为 ‘1’ 表示盒子里有 一个 小球。 在一步操作中,你可以将 一个 小球从某个盒子移动到一个与之相邻的盒子中。第 i 个盒子和第 j 个盒子相邻需满足 abs(i - j) == 1 。注意,操作执行后,某些盒子中可能会存在不止一个小球。 返回一个长度为 n 的数组 answer ,其中 answer[i] 是将所有小球移动到第 i 个盒子所需的 最小 操作数。 每个 answer[i] 都需要根据盒子的 初始状态 进行计算。 示例 1: 12输入:boxes = "110"输出:[1,1,3] 解释:每个盒子对应的最小操作数如下: 第 1 个盒子:将一个小球从第 2 个盒子移动到第 1 个盒子,需要 1 步操作。 第 2 个盒子:将一个小球从第 1 个盒子移动到第 2 个盒子,需要 1 步操作。 第 3 个盒子:将一个小球从第 1 个盒子移动到第 3 个盒子,需要 2 步操作。将一个小球从第 2 ...
LC104. 二叉树的最大深度
题目 ->LC104. 二叉树的最大深度 解题思路 难点在怎么将深度加起来 我们对二叉树进行后序遍历 左 -> 右 -> 中 我们将遍历到的节点看作中间节点,那么它的深度就是左右子树中最大深度+1 代码 Python 12345678class Solution: def maxDepth(self, root: Optional[TreeNode]) -> int: def dfs(node): if node is None: return 0 cnt = 1 + max(dfs(node.left), dfs(node.right)) return cnt ans = dfs(root) return ans C++ 123456789101112class Solution {public: int dfs(TreeNode* node) { if (node == NULL) return 0; ...
LC101. 对称二叉树
题目 LC101. 对称二叉树 解题思路 首先二叉树要满足以下条件才是对称的二叉树: 由外向内的值相同 1234567 1 2 23 4 4 3[2, 2][3, 4, 3, 4]类似一个双指针,不断向内收缩同时对比是否相等 左右子树深度相同,也就是左右子树节点数相同 我们模拟这个由外到内的过程就能判断二叉树是不是对称的 代码 Python 1234567891011121314151617181920212223class Solution: def isSymmetric(self, root: Optional[TreeNode]) -> bool: q = deque() q.append(root.left) q.append(root.right) while q: # 左节点和右节点 leftNode = q.popleft() rightNode = q.popleft() ...
LC226. 翻转二叉树
题目 -> LC226. 翻转二叉树 解题思路 代码 Python 1234567class Solution: def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]: if root is None: return TreeNode().left self.invertTree(root.left) self.invertTree(root.right) root.left, root.right = root.right, root.left return root C++ 123456789101112class Solution {public: TreeNode* invertTree(TreeNode* root) { if (root == NULL) return root; invertTree(root->left); in ...
LC102.二叉树的层序遍历
题目 -> LC102 解题思路 使用一个容器存储节点然后遍历 c++可以使用vector或者deque python直接使用list也可以deque 代码 Python 1234567891011121314151617class Solution: def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]: if root == None: return [] q = [] result = [] q.append(root) while q: items = [] res2 = [] for node in q: res2.append(node.val) items.append(node.left) if node.left else ... ...
LC895. 最大频率栈
题目 解题思路 两个哈希表,一个变量 cnt记录每个元素出现的频率 result记录每个频率的栈 max_Count 或者 MAX用来记录当前最大频率 代码 Python 1234567891011121314151617181920212223class FreqStack: def __init__(self): self.cnt = defaultdict(int) self.result = defaultdict(list) self.MAX = 0 def push(self, val: int) -> None: cnt = self.cnt stack = self.result cnt[val] += 1 if cnt[val] > self.MAX: self.MAX = cnt[val] stack[cnt[val]].append(val) def pop(self) -> int: ...
LC145. 二叉树的后序遍历
解题思路 递归 迭代 代码 Python 递归 迭代 C++ 递归 1234567891011121314class Solution {public: vector<int> postorderTraversal(TreeNode* root) { vector<int> result; dfs(root, result); return result; } void dfs(TreeNode* node, vector<int> &result) { if (node == NULL) return; dfs(node->left, result); dfs(node->right, result); result.push_back(node->val); }}; 迭代 12345678910111213141516171819202122 ...
LC94. 二叉树的中序遍历
解题思路: 递归 迭代 代码: Python 递归 12345678910class Solution: def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]: def dfs(node: TreeNode, result: List[int]) -> None: if node == None: return dfs(node.left, result) result.append(node.val) dfs(node.right, result) result = [] dfs(root, result) return result 迭代 1234567891011121314class Solution: def inorderTraversal(self, root: Optional[TreeNode]) -> List[int ...
LC144. 二叉树的前序遍历
解题思路: 递归 按照前序遍历的定义来遍历 中 -> 左 -> 右 将值存储进数组就行了 迭代 因为要实现 中 -> 左 -> 右 右是最后遍历的,所以是先进后出(FILO)栈,先将根节点存进栈,然后每次取出栈顶,然后将右节点和左节点先后压入栈中 代码 Python 递归 1234567891011class Solution: def preorderTraversal(self, root: Optional[TreeNode]) -> List[int]: def dfs(node, lis) -> None: if node == None: return lis.append(node.val) dfs(node.left, lis) dfs(node.right, lis) result = [] dfs(root, result) return result ...
avatar
🐟认真摸鱼中
楠君的小窝
Live is so good
前往小窝
公告栏
--- 主域名 ---
fomal.cc | fomal.cn
--- 备用域名 ---
netlify.fomal.cc
cloudflare.fomal.cc
--- 网站安卓APP ---
🍧点此下载🍧
小站资讯
文章数目 :
111
本站总字数 :
6.3w
本站访客数 :
本站总访问量 :
最后更新时间 :
空降评论复制本文地址
随便逛逛昼夜切换关于博客美化设置切换全屏打印页面