leetcode tarjan 341 lca
LeetCode 55. 跳跃游戏
class Solution { public: //f[i]表示下标i是否能跳到 static const int N=3e4+10; bool canJump(vector<int>& nums) { int n=nums.size(); for(int i=0,j=0;i<n;i++)//j记 ......
【LeetCode动态规划#01】动规入门:求斐波那契数 + 爬楼梯(熟悉解题方法论)
斐波那契数 力扣题目链接(opens new window) 斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) = 0,F(1) = 1 F(n) = F(n - 1) + F(n - 2),其中 ......
LeetCode151. 反转字符串中的单词
题目描述: 给你一个字符串 s ,请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 注意:输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果 ......
LeetCode 169. 多数元素(/hash sort 随机化 分治 Boyer-Moore 投票算法)
原题解 ###题目 约束 ###题解 ####方法一:哈希表 class Solution { public: int majorityElement(vector<int>& nums) { unordered_map<int, int> counts; int majority = 0, cnt ......
LeetCode剑指 Offer 05. 替换空格
题目描述: 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 示例 1: 输入:s = "We are happy."输出:"We%20are%20happy." 限制: 0 <= s 的长度 <= 10000 //使用一个新的对象,复制 str,复制的过程对其判断,是空格则替换,否则直 ......
代码随想录Day7-Leetcode454. 四数相加 II,383. 赎金信 ,15. 三数之和 ,18. 四数之和
### 454. 四数相加 II 这个第一时间没想出来怎么做的; 后面看了题解才发现可以两两分组;绝了 /** * @param {number[]} nums1 * @param {number[]} nums2 * @param {number[]} nums3 * @param {number ......
LeetCode541. 反转字符串 II
题目描述: 给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。 如果剩余字符少于 k 个,则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。 示例 1: 输入:s = "ab ......
代码随想录Day5-Leetcode242.有效的字母异位词,349. 两个数组的交集,202. 快乐数,1. 两数之和
242.有效的字母异位词 准备面试隔了三天没刷题, 结果面试里就考到哈希表了,也是蛮感叹的. 简单题, 不过api又忘的差不多了 这道可以用数组手动实现一个简易哈希表, 但(因为面试里这么干我最后写不出来了)为了适配unicode还是用map更妥当 /** * @param {string} s * ......
SCOI2015 情报传递 主席树+LCA
哈哈哈哈老婆我有出息了,犬犬第一次从思路到代码都是自己一发切了紫题呢~ 好了一眼数据结构。 考虑如何转化第i个时刻有威胁的情报员,若能产生威胁 则说明他们至少在i-c-1这个时刻"出生" 也就是转化为在权值线段树上查询[1,i-c-1]有多少个人。 启发了我们可以先把未来的情报员都弄下来,再记一个他 ......
LeetCode344. 反转字符串
题目描述: 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 示例 1: 输入:s = ["h","e","l","l","o"]输出:["o","l","l","e ......
LeetCode 31. 下一个排列
思路 因为找的是字典序升序的下一个排列,因此要尽量保证前面不动,我们从后往前考虑 从后往前找到第一个非降序的位置,然后把这个位置的数字和最小的比它大的数字交换,最后从该位置后整理为升序 这样保证了值变大,且增大的最少 从数组末尾往前找,找到 第一个 位置 j,使得 nums[j] < nums[j ......
Leetcode18. 四数之和
题目描述: 给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复): 0 <= a, b, c, d < ......
LeetCode剑指offer
剑指 Offer 30. 包含min函数的栈 https://leetcode.cn/problems/bao-han-minhan-shu-de-zhan-lcof/description/ class MinStack { // B用来存放每次输入时小于之前最小值的元素,当需要取最小值时,直接B ......
LeetCode 746 使用最小花费爬楼梯
代码随想录_0746.使用最小花费爬楼梯 给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 请你计算并返回达到楼梯顶部的最低花费。 题目跳转链接 ......
LeetCode15. 三数之和
题目描述: 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请 你返回所有和为 0 且不重复的三元组。 注意 ......
链表操作-leetcode23-删除倒数第几个节点
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 示例 2: 输入:head = [1], n = 1 输出:[] 示例 3: 输入:head = [1,2], n = 1 输出:[1] 提示: 链表中结点的数目为 sz 1 <= sz <= 30 0 <= Node. ......
LeetCode|383. 赎金信
题目链接:383. 赎金信 给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以,返回 true ;否则返回 false 。 magazine 中的每个字符只能在 ransomNote 中使用一次。 示例 1 ......
LeetCode|876. 链表的中间结点
题目链接:876. 链表的中间结点 难度简单829收藏分享切换为英文接收动态反馈 给你单链表的头结点 head ,请你找出并返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 示例 1: 输入:head = [1,2,3,4,5] 输出:[3,4,5] 解释:链表只有一个中间结点,值为 ......
Leetcode 14. 最长公共前缀(模拟)
题目链接在这里:最长公共前缀 虽然是很简单的模拟题,但是鼠鼠学习了很多面向对象编程中遇到的一些问题,具体的可以看这个链接python中的静态方法与实例方法 class Solution: def longestCommonPrefix(self,strs)->str: if not strs: re ......
LeetCode 27 移除元素
题目跳转链接 ####双指针法 移出元素 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素 ......
Leetcode209. 长度最小的子数组
题目跳转链接 滑动窗口解法 代码随想录 209.长度最小的子数组 滑动窗口是一种基于双指针的算法,它可以用于解决一些数组/字符串的子元素问题,例如:找到最长的子数组、最小的子串等等。 滑动窗口算法的思路就是维护两个指针,一个左指针和一个右指针,它们之间的区间就是滑动窗口。我们需要根据题目要求不断调整 ......
【LeetCode贪心#11】单调递增的数字(详解)
单调递增的数字 力扣题目链接(opens new window) 给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增。 (当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。) 示例 1: 输入: N = ......
LeetCode383. 赎金信
题目描述: 给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以,返回 true ;否则返回 false 。 magazine 中的每个字符只能在 ransomNote 中使用一次。 示例 1: 输入:ran ......
Leetcode 11. 盛最多水的容器(贪心)
题目链接在这里:Leetcode 11.盛最多水的容器 这是一道非常好的贪心题,用到了双指针。首先这个数据用dp很显然是要超时的,如果使用二分,前缀数组也没有什么思路,所以考虑用贪心,贪心的话需要用两个指针移动,考虑从两端向中间移动。 我们知道短板效应,因此水的多少和长板的长度关系不大。可以得出结论 ......
合并链表-leetcode23-合并k个升序链表
给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例 1: 输入:lists = [[1,4,5],[1,3,4],[2,6]] 输出:[1,1,2,3,4,4,5,6] 解释:链表数组如下: [ 1->4->5, 1->3->4, 2->6 ] ......
【LeetCode】3.19 对称二叉树
101. 对称二叉树 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root = [1,2,2,3,4,4,3] 输出:true 示例 2: 输入:root = [1,2,2,null,3,null,3] 输出:false 提示: 树中节点数目在范围 [1, 100 ......
【DP】LeetCode 剑指 Offer 62. 圆圈中最后剩下的数字
题目链接 剑指 Offer 62. 圆圈中最后剩下的数字 思路 经典约瑟夫环问题,可以使用找规律的方法进行解决。 以 n = 8, m = 3为例,下面这幅图展示了模拟执行的全过程,用 F(n,m) 表示最后存活的人的索引。 从8个人开始,每次杀掉一个人,去掉被杀的人,然后把杀掉那个人之后的第一个人 ......
[LeetCode] 2348. Number of Zero-Filled Subarrays
Given an integer array nums, return the number of subarrays filled with 0. A subarray is a contiguous non-empty sequence of elements within an array. ......
刷爆 LeetCode 双周赛 100,单方面宣布第一题最难
本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问。 大家好,我是小彭。 上周末是 LeetCode 第 100 场双周赛,你参加了吗?这场周赛整体没有 Hard 题,但是也没有 Easy 题。第一题国服前百名里超过一半人 wa,很少见。 小彭的技术交流群 02 ......