打家劫舍leetcode 007 198
【LeetCode剑指offer 01】数组中重复的数字、两个栈实现队列
数组中重复的数字 数组中重复的数字 找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例 1: 输入: [2, 3, 1, 0, 2, ......
Leetcode(剑指offer专项训练)——DP专项(7)
矩阵中的距离 题目: 给定一个由 0 和 1 组成的矩阵 mat ,请输出一个大小相同的矩阵,其中每一个格子是 mat 中对应位置元素到最近的 0 的距离。 两个相邻元素间的距离为 1 。 链接 TLS思路题解 暴力DFS的结果是超时😢,就是找每个位置的距离它最近的零点的位置 class Solu ......
LeetCode 81. 搜索旋转排序数组 II
1 class Solution { public: bool search(vector<int>& nums, int target) { int index = -1; for (int i = 0; i < nums.size() - 1; ++i){ if (nums[i] > nums[ ......
LeetCode 力扣 205. 同构字符串
给定两个字符串 s 和 t ,判断它们是否是同构的。 如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。 每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。 示例 1: 输入 ......
[LeetCode] 1339. Maximum Product of Splitted Binary Tree 分裂二叉树的最大乘积
Given the root of a binary tree, split the binary tree into two subtrees by removing one edge such that the product of the sums of the subtrees is max ......
[LeetCode] 2405. Optimal Partition of String
Given a string s, partition the string into one or more substrings such that the characters in each substring are unique. That is, no letter appears i ......
【LeetCode排序专题02】最小k个数,关于快速排序的讨论
最小k个数 输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。 示例 1: 输入:arr = [3,2,1], k = 2 输出:[1,2] 或者 [2,1] 示例 2: 输入:arr = [0,1,2,1], k ......
代码随想录Day20-Leetcode654.最大二叉树,617.合并二叉树,700.二叉搜索树中的搜索,98.验证二叉搜索树
654.最大二叉树 题目链接:https://leetcode.cn/problems/maximum-binary-tree/ 基本的模拟思路很快 /** * Definition for a binary tree node. * function TreeNode(val, left, rig ......
滑动窗口-leetcode344-反转字符出啊
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 示例 1: 输入:s = ["h","e","l","l","o"] 输出:["o","l","l","e","h" ......
滑动窗口-leetcode-167-俩树之和
以长度为 2 的整数数组 [index1, index2] 的形式返回这两个整数的下标 index1 和 index2。 你可以假设每个输入 只对应唯一的答案 ,而且你 不可以 重复使用相同的元素。 你所设计的解决方案必须只使用常量级的额外空间。 示例 1: 输入:numbers = [2,7,11 ......
快慢指针-leetcode27移除元素
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 说明: 为什么返回数值是整数,但输出的 ......
快慢指针-leetcode-26
题目描述: 给定一个已经排序好的数组,删除重复的元素,使每个元素只出现一次,并返回新的数组长度。 不要为另一个数组分配额外的空间,必须采用 O(1) 额外内存复杂度的原地算法来解决这个问题。 示例 1: 输入: nums = [1, 1, 2] 输出: length=2, nums=[1,2] 解释 ......
【LeetCode排序专题01】由旋转数组的最小数字引出的关于排序算法的讨论(冒泡排序、二分查找+暴力法)
旋转数组的最小数字 剑指 Offer 11. 旋转数组的最小数字 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数组,并按上述情形进行了一次旋转。请返回旋转数组的最小元素。例如,数组 [3,4,5,1 ......
[Leetcode Weekly Contest]339
链接:LeetCode [Leetcode]2609. 最长平衡子字符串 给你一个仅由 0 和 1 组成的二进制字符串 s 。 如果子字符串中 所有的 0 都在 1 之前 且其中 0 的数量等于 1 的数量,则认为 s 的这个子字符串是平衡子字符串。请注意,空子字符串也视作平衡子字符串。 返回 s ......
「动态规划」LeetCode 70(爬楼梯)
Leetcode 70 题 有人问我:烤冷面你这两周怎么总搞简单题?我想说:一步一步来~ 题干简述 给定: 假设你正在爬楼梯,需要爬 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。 要求:计算出有多少种爬楼梯的方式。 解题思路 如果我们缩小视野(把大问题化为小问题),爬到第 n 阶台阶有 ......
刷爆 LeetCode 周赛 339,贪心 / 排序 / 拓扑排序 / 平衡二叉树
本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问。 大家好,我是小彭。 上周末是 LeetCode 第 339 场周赛,你参加了吗?这场周赛覆盖的知识点比较少,前三题很简单,第四题上难度。 周赛大纲 2609. 最长平衡子字符串(Easy) 模拟:$O(n)$ ......
LeetCode 145 二叉树的后序遍历
LeetCode | 145.二叉树的后序遍历 给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 。 示例 1: 1 \ 2 / 3 输入:root = [1,null,2,3] 输出:[3,2,1] 示例 2: 输入:root = [] 输出:[] 示例 3: 输入:root = [1 ......
【贪心】LeetCode 45. 跳跃游戏 II
题目链接 45. 跳跃游戏 II 思路 如果某一个作为 起跳点 的格子可以跳跃的距离是 3,那么表示后面 3 个格子都可以作为 起跳点。 11. 可以对每一个能作为 起跳点 的格子都尝试跳一次,把 能跳到最远的距离 不断更新。 如果从这个 起跳点 起跳叫做第 1 次 跳跃,那么从后面 3 个格子起跳 ......
反转链表hard-leetcode25
给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。 k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。 你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换 思路: 每k个节点翻转一次,相当于确定左右 ......
【贪心】LeetCode 55. 跳跃游戏
题目链接 55. 跳跃游戏 思路 如果某一个作为 起跳点 的格子可以跳跃的距离是 3,那么表示后面 3 个格子都可以作为 起跳点。可以对每一个能作为 起跳点 的格子都尝试跳一次,把能跳到最远的距离 不断更新。如果可以一直跳到最后,就成功了。 代码 class Solution { public bo ......
【DP】LeetCode 256. 粉刷房子
题目链接 256. 粉刷房子 假如有一排房子,共 n 个,每个房子可以被粉刷成红色、蓝色或者绿色这三种颜色中的一种,你需要粉刷所有的房子并且使其相邻的两个房子颜色不能相同。 当然,因为市场上不同颜色油漆的价格不同,所以房子粉刷成不同颜色的花费成本也是不同的。每个房子粉刷成不同颜色的花费是以一个 n ......
Leetcode刷题--最长回文子串/dp = [[False] * n for _ in range(n)]
官方动态规划解决最长回文串问题代码解释: class Solution: def longestPalindrome(self, s: str) -> str: n = len(s) #字符串的总长度 if n < 2: return s #如果字符串长度为1,则s本身就是最长回文串 max_len ......
[LeetCode] 2300. Successful Pairs of Spells and Potions
You are given two positive integer arrays spells and potions, of length n and m respectively, where spells[i] represents the strength of the ith spell ......
leetcode题中的逆向思维——集锦
417. 太平洋大西洋水流问题 虽然题目要求的是满足向下流能到达两个大洋的位置,如果我们对所有的位置进行搜索,那么在不剪枝的情况下复杂度会很高。因此我们可以反过来想,从两个大洋开始向上流,这样我们只需要对矩形四条边进行搜索。搜索完成后,只需遍历一遍矩阵,满足条件的位置即为两个大洋向上流都能到达的位置 ......
leetcode 394.字符串解码 Java
394.字符串解码 给定一个经过编码的字符串,返回它解码后的字符串。 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。 你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格 ......
leetcode 739.每日的温度 Java
739.每日的温度 给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。 示例 1: 输入: temperatures = [73, ......
leetcode 20. 有效的括号 Java
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类型的左括号。 示例 1: 输入:s = "()" 输出:true 示例 2: 输入 ......
Leetcode(剑指offer专项训练)——DP专项(6)
排序的数目 题目 给定一个由 不同 正整数组成的数组 nums ,和一个目标整数 target 。请从 nums 中找出并返回总和为 target 的元素组合的个数。数组中的数字可以在一次排列中出现任意次,但是顺序不同的序列被视作不同的组合。 题目数据保证答案符合 32 位整数范围。 链接 无效DF ......
Leetcode(剑指offer专项训练)——DP专项(5)
最少的硬币数目 给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。 你可以认为每种硬币的数量是无限的。 链接 完全背包问题 思路:主要是要自己推出动态转移方程 $$ F(i)=min_{ ......
【DP】LeetCode 64. 最小路径和
题目链接 64. 最小路径和 思路 分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律 表示状态 假设到了右下角,考虑一下我们要存储的信息 走到最后坐标的最小步数 当前坐标的信息,用来判断是否走到了右下角 很容易联想到使用二维数组 dp[i][j ......