LeetCode
记录学习,分享心得
Ich will mit dir S wim
我讨厌温柔的女生,只要打过招呼 就会开始在意 只要互发过几次邮件 就会心潮澎湃 要是有电话打来 只是看着通话记录就情不自禁的笑起来 但是我知道 那只是因为温柔 对我温柔的人 对待他人也很温柔 而我险些忘记了这一点 如果说真相是残酷的 那谎言一定是最温柔的美 所以温柔即是谎言
展开
-
【JAVA】PriorityQueue优先队列的使用
按逆序创建:创建一个PriorityQueue优先队列,其按逆自然顺序进行排序(从大到小,队头大队尾小)内容二:PriorityQueue的注意事项内部使用的是堆排序,堆排序只会保证第一个元素是当前优先队列里最小(或者最大)的元素。当使用迭代器遍历时,结果不会按序进行输出;若需要结果按序输出,则需要使用循环和poll()进行获取内容。...原创 2022-07-02 21:02:33 · 611 阅读 · 0 评论 -
res.add(new ArrayList<>(path))和res.add(path)的区别
1.创建两个集合: public static ArrayList<Integer> path = new ArrayList<>(); public static ArrayList<ArrayList<Integer>> res = new ArrayList<>();共同点: 都是向res这个ArrayList中填加了一个名为path的集合不同点:res.add(new ArrayList(path)):开辟一原创 2022-04-30 21:44:39 · 547 阅读 · 0 评论 -
「滑动窗口」leetcode原题详解
2024. 考试的最大困扰度一位老师正在出一场由 n 道判断题构成的考试,每道题的答案为 true (用 ‘T’ 表示)或者 false (用 ‘F’ 表示)。老师想增加学生对自己做出答案的不确定性,方法是 最大化 有 连续相同 结果的题数。(也就是连续出现 true 或者连续出现 false)。给你一个字符串 answerKey ,其中 answerKey[i] 是第 i 个问题的正确结果。除此以外,还给你一个整数 k ,表示你能进行以下操作的最多次数:每次操作中,将问题的正确答案改为 ‘T’ 或者原创 2022-03-29 15:56:26 · 146 阅读 · 0 评论 -
172.阶乘后的零
题目:给定一个整数 n ,返回 n! 结果中尾随零的数量。提示 n! = n * (n - 1) * (n - 2) * … * 3 * 2 * 1示例 1:输入:n = 3输出:0解释:3! = 6 ,不含尾随 0示例 2:输入:n = 5输出:1解释:5! = 120 ,有一个尾随 0示例 3:输入:n = 0输出:0思路与算法其实就找出阶乘的结果中有多少个0,这个是纯纯的查找问题,可以将其转化为字符串类型。我们再深入一下,有多少个0难道不就是有多少个2*5吗?原创 2022-03-25 13:29:18 · 393 阅读 · 0 评论 -
209. 长度最小的子数组
题目:给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。思路与算法方法一:暴力O2遍历数组nums,每次遍历将第一个下标的元素作为子数组的开始,从下标i向后遍历,使得nums[i]到nums[j]的和>=target,跟新最小子数组长度min。代码:class Solution {原创 2022-03-22 20:04:54 · 94 阅读 · 0 评论 -
59. 螺旋矩阵 II
题目:螺旋矩阵 II思路与算法:题目:螺旋矩阵 II给你一个正整数 n,生成一个包含 1 到 n*n所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵matrix。示例 1:输入:n = 3输出:[[1,2,3],[8,9,4],[7,6,5]]示例 2:输入:n = 1输出:[[1]]思路与算法:先来看看我自己的,感觉定义的参数有点多哈,有时候就不能分辨清楚,这一点要改进。然后就是咋一看这题应该用模拟法。从最外面一圈一圈的加数子。我这里定义了两层循环:第一.原创 2022-03-21 21:55:53 · 237 阅读 · 0 评论 -
20. 有效的括号
给定一个只包括 '(',')','{','}','[',']'的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = “()”输出:true示例 2:输入:s = “()[]{}”输出:true示例 3:输入:s = “(]”输出:false示例 4:输入:s = “([)]”输出:false示例 5:输入:s = “{[]}”输出:true首先来看我的傻傻的暴力解法原创 2022-03-20 14:26:31 · 340 阅读 · 0 评论 -
387. 字符串中的第一个唯一字符
题目给定一个字符串s,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 -1 。示例 1:输入: s = “leetcode”输出: 0示例 2:输入: s = “loveleetcode”输出: 2示例 3:输入: s = “aabb”输出: -1方法一:使用哈希表存储频数思路与算法我们可以对字符串进行两次遍历在第一次遍历时,通过hash映射统计每个字符出现的频数,如果只出现一次,设置他的值为1,如果出现多次就设置值为0或其他。代码:publi原创 2022-03-20 13:47:44 · 513 阅读 · 0 评论 -
739. 每日温度
给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指在第 i 天之后,才会有更高的温度。如果气温在这之后都不会升高,请在该位置用 0 来代替。示例 1:输入: temperatures = [73,74,75,71,69,72,76,73]输出: [1,1,4,2,1,1,0,0]示例 2:输入: temperatures = [30,40,50,60]输出: [1,1,1,0]示例 3:输入: temperat原创 2022-03-17 22:11:23 · 93 阅读 · 0 评论 -
503. 下一个更大元素 II
503. 下一个更大元素 II给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[0] ),返回 nums 中每个元素的 下一个更大元素 。数字 x 的 下一个更大的元素 是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1 。示例 1:输入: nums = [1,2,1]输出: [2,-1,2]解释: 第一个 1 的下一个更大的数是 2;数字 2 找不到下一个更大的数;第原创 2022-03-17 20:59:59 · 613 阅读 · 0 评论 -
21. 合并两个有序链表
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0]代码:** * Definition for singly-linked list. * public class ListNode { * int原创 2022-01-09 16:02:04 · 440 阅读 · 0 评论 -
最长递增子序列
我们一起来分析一道经典leetcode题目吧★ 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。示例 1:输入:nums = [10,9,2,5,3,7,101,18]输出:4解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。示例 2:输入:nums = [0,1,0,3,2,3]输出:4我们按照我们的解题思路:穷举分析确定边界找规律,确定最优子结构状态转移方程1.穷举分析因为动态规划,核心思想包括拆分子问题,记住过往,减少重复计算。 所原创 2021-11-01 16:58:33 · 504 阅读 · 0 评论 -
202009 -2 风险人群筛查
题目背景某地疫情爆发后,出于“应检尽检”的原则,我们想要通知所有近期经过该高危区域的居民参与核酸检测。问题描述想要找出经过高危区域的居民,分析位置记录是一种简单有效的方法。具体来说,一位居民的位置记录包含个平面坐标 ,其中 表示该居民 时刻所在位置。高危区域则可以抽象为一个矩形区域(含边界),左下角和右上角的坐标分别为 和 ,满足 且。考虑某位居民的位置记录,如果其中某个坐标位于矩形内(含边界),则说明该居民经过高危区域;进一步地,如果其中连续个或更多坐标均位于矩形内(含边界),则认为该居原创 2021-11-17 10:59:12 · 235 阅读 · 0 评论 -
带有备忘录的递归算法
暴力递归★ leetcode原题:一只青蛙一次可以跳上1级台阶,也可以跳上2级台 阶。求该青蛙跳上一个 10 级的台阶总共有多少种跳法。要计算原问题 f(10),就需要先计算出子问题 f(9) 和 f(8)然后要计算 f(9),又要先算出子问题 f(8) 和 f(7),以此类推。直到 f(2) 和 f(1),递归树才终止。 要想跳到第10级台阶,要么是先跳到第9级,然后再跳1级台阶上去;要么是先跳到第8级,然后一次迈2级台阶上去。 同理,要想跳到第9级台阶,要么是先跳原创 2021-10-31 17:27:40 · 5490 阅读 · 1 评论 -
数组-删除有序数组中的重复项
删除排序数组中的重复项给你一个有序数组 nums ,请你原地删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝int len = removeDup原创 2021-12-10 19:56:38 · 124 阅读 · 0 评论