LeetCode
文章平均质量分 56
每日一刷等
我是逸杰
这个作者很懒,什么都没留下…
展开
-
LeetCode 208.实现Trie(前缀树)
对于插入结点,从头到尾判断输入字符串的字符,字符为a~z,对应数组中0~25,如果数组该位置不为空,那么代表该位置存了这个字母,再判断isEnd是否为true,如果为true,那么从根节点到这个位置就存了一个字符串。前缀树,创建一个多叉树,结点主要内容为一个指向子节点的长度为26的数组,以及一个布尔类型的参数,表示当前结点是否为叶子结点,即字符串的结尾。原创 2023-01-05 13:06:45 · 96 阅读 · 0 评论 -
LeetCode 1184.公交站间的距离(简单)
代码】LeetCode1184.公交站间的距离(简单)原创 2022-07-24 17:10:39 · 251 阅读 · 0 评论 -
LeetCode 648.单词替换(中等)
三、题解(官方) 官方第一个方法与我的差不多原创 2022-07-07 17:57:56 · 1495 阅读 · 0 评论 -
LeetCode 929.独特的电子邮件地址(简单)
Leetcode 929 去掉本地名中第一个加号后的部分包括加号 去掉本地名中所有句点原创 2022-06-04 12:30:52 · 1346 阅读 · 1 评论 -
LeetCode 1022.从根到叶的二进制之和(简单)
一、题目二、思路(自己)对给出的根节点root进行后序遍历,如果是叶子节点返回对应的数字,否则返回它左子树和右子树对应的结果之和· public class Solution { public int sumRootToLeaf(TreeNode root) { return dfs(root,0); } public int dfs(TreeNode root,int val){ if(root==null){ ..原创 2022-05-30 22:47:55 · 1101 阅读 · 0 评论 -
D75 LeetCode 812.最大三角形面积(简单)
一、题目二、思路(自己)我觉得这道题考的是纯数学几何知识啊,用纯枚举 class Solution { public double largestTriangleArea(int[][] points) { int n = points.length; double ret = 0.0; for (int i = 0; i < n; i++) { for (int j = i + 1; j < n;.原创 2022-05-15 22:17:41 · 452 阅读 · 0 评论 -
D74 LeetCode 691.贴纸拼词(困难)
一、题目二、思路(自己)先判断target中的字母在strickers中是否都包含,如果都包含则任务可以实现 需要得出target最小贴纸数量,感觉这一部分是比较难的 得到target中字母各项数目,然后再从strickers中一一组合,统计所需贴纸最少的一次 事实证明我这个方法不可行三、题解(官方)class Solution { public int minStickers(String[] stickers, String target) { in原创 2022-05-14 17:46:43 · 355 阅读 · 0 评论 -
D73 LeetCode 面试题 01.05.一次编辑(中等)
一、题目二、思路(自己)目前的想法是,先判断first和second的长度,分别标记为f和s 如果f=s,判断first到second是否是替换一个字符就能实现,或者是否相等 如果f>s,判断first到second是否删除一个字符就能实现:首先判断f是否比s大1,满足条件的话,就从f中从头到尾删一个字符,如果能匹配上一次,就证明能够删除一个字符就能实现。 如果f<s,判断first到second是否插入一个字符就能实现...原创 2022-05-13 17:31:33 · 168 阅读 · 0 评论 -
D72 LeetCode 944.删列造序(简单)
一、题目二、思路(自己)这个题目很好理解,就是提取每个字符串同一位置的字符进行比较,然后看是不是升序的即可 通过两个for循坏,一一检查每列的顺序class Solution { public int minDeletionSize(String[] strs) { int count=0; for (int i = 0; i < strs[0].length(); i++) { for (int j = .原创 2022-05-12 23:19:57 · 97 阅读 · 0 评论 -
D53 LeetCode 587.安装栅栏(困难)
一、题目二、思路(自己)这题很好理解,但是我真的不会。(;′⌒`)三、题解(官方)今天我还要做康复,这题标记一下之后再写吧安装栅栏 - 安装栅栏 - 力扣(LeetCode) (leetcode-cn.com)https://leetcode-cn.com/problems/erect-the-fence/solution/an-zhuang-zha-lan-by-leetcode-solution-75s3/...原创 2022-04-23 18:18:26 · 82 阅读 · 0 评论 -
D52 LeetCode 396.旋转函数(中等)
一、题目二、思路(自己)目前的思路是把每种情况算出来,然后得出最大值。 class Solution { public int maxRotateFunction(int[] nums) { int l=nums.length; int[] res=new int[l]; for (int i = 0; i < l; i++) { for (int j = 0; j < l; j++) {.原创 2022-04-22 19:20:00 · 1584 阅读 · 0 评论 -
D51 LeetCode 824.山羊拉丁文(简单)
一、题库二、思路(自己)又是处理字符串的题目,应该先把输入的字符串分割为单词,使用split方法,然后再对单词进行一一处理即可。 对分割的单词按题目要求进行一一处理即可。 class Solution { public String toGoatLatin(String sentence) { String[] words=sentence.split(" "); String s1="aeiouAEIOU"; for (int i.原创 2022-04-21 18:29:36 · 158 阅读 · 0 评论 -
D50 LeetCode 388.文件的最长绝对路径(中等)
一、题目二、思路(自己)来自评论区的理解: 利用String的split方法分割元素 再第一步所得元素的基础上从左向右遍历,用一个pahLens数组记录所遍历元素的路径长度。其中pahLens[i]表示level为i的元素的路径长度(存在多个level元素时,取最后面的元素)。这就是动态规划的思想,时间O(n)。 class Solution { public int lengthLongestPath(String input) { if(inpu.原创 2022-04-20 18:53:56 · 777 阅读 · 0 评论 -
D49 LeetCode 821.字符的最短距离(简单)
一、题目二、思路(自己) 先确定字符串中字符c出现的位置,将其存入一个数组,然后再将字符串中各个各个位置与其相减取最小值即可。 class Solution { public int[] shortestToChar(String s, char c) { char[] ans=s.toCharArray(); List<Integer> l=new ArrayList<>(); for (int i =..原创 2022-04-19 11:14:28 · 218 阅读 · 0 评论 -
D48 LeetCode 386.字典序排数(中等)
一、题目二、思路(自己)感觉之前做过一个类似的,不过难度是困难的。是这个,(1条消息) D22 LeetCode 440.字典序的第K小数字(困难)_胡逸杰爱学习的博客-CSDN博客https://blog.csdn.net/weixin_66813230/article/details/123677090 这个题目要求时间复杂度为O(n),且额外空间为O(1),我用之前写的红黑树试一下。class Solution { public List<Integer> le.原创 2022-04-18 10:53:17 · 123 阅读 · 0 评论 -
D47 LeetCode 819.最常见的单词(简单)
一、题目二、思路(自己)先将paragraph中所有字母小写,然后将单词分开进行存储到treemap中,单词作为键,出现次数作为值,最后再从高到低判断键是否在banned数组中。 class Solution { public String mostCommonWord(String paragraph, String[] banned) { String s1=paragraph.toLowerCase(); String[] s2=s1.split原创 2022-04-17 18:53:55 · 386 阅读 · 0 评论 -
D46 LeetCode 479.最大回文数(困难)
一、题目二、思路(自己)三、题解(官方)四、一些题外话很久没更新了,大概有个二十天吧,主要是因为断更那天发生了一件比较倒霉的事,导致我不得不停更这么久。现在慢慢恢复,我会一直加油更新下去的!胡逸杰冲冲冲...原创 2022-04-16 21:05:33 · 764 阅读 · 0 评论 -
D24 LeetCode 172.阶乘后的零(中等)
一、题目二、思路(自己)如果按照普通思维,即先求阶乘,再计算尾随0的数量即可 值得注意的是,尾随0的话,并不是得到的数字包含0的个数,而是末端0的个数 但是这样做是不行的,到后面肯定会超时三、题解(官方)首先需要清楚的是,末尾有多少个0,只需要判断在阶乘的过程中,乘了多少个0即可 化成因子即为2*5,由于2出现的频率远远高于5,所以我们只需要计算5出现的频率即可 因子5每隔5次出现一次,每隔25又会比5多出一次,每隔125会比25多出一次.....class Solution原创 2022-03-25 09:57:29 · 342 阅读 · 0 评论 -
D23 LeetCode 661.图片平滑器(简单)
一、题目二、思路(自己)题目给出的过滤器是3*3的,但是对于图像的大小,我们是不能确定的。只需要考虑边缘的特殊情况,其余则是统一处理。 如果我所有的同一考虑:价格判断条件(该元素上一行和下一行是否存在,该元素前一列和后一列是否存在),根据判断情况不同来处理 我要放在两个for循坏里遍历,感觉时间复杂度有点高了,先写一下看能否通过编译吧 不考虑极端情况,第一行的元素、最后一行的元素、第一列的元素、最后一列的元素少加一段class Solution { public in原创 2022-03-24 09:52:04 · 558 阅读 · 0 评论 -
D22 LeetCode 440.字典序的第K小数字(困难)
一、题目二、思路(自己)题目要求是字典序排列,即按照字符串比较一样进行排列,前几天刚好面过类似的题,为了降低时间复杂度,我们可以采用红黑树进行排序。 使用TreeSet来存储里面的数组,重写比较器即可。class Solution { public int findKthNumber(int n, int k) { Set<Integer> set=new TreeSet<>(new Comparator<Integer>() {原创 2022-03-23 10:00:43 · 1009 阅读 · 0 评论 -
D21 LeetCode 2038.如果相邻两个颜色均相同则删除当前颜色(中等)
一、题目二、思路(自己)值得注意的是,题目给出了一个条件不能从字符串两端删除颜色片段。从示例可以理解的是,跳过首个字符和末个字符,从中间开始进行计算。 按照一般的方法的话就是:搜索相同的连续字符串,然后计算A和B连续字符串的个数和。比较大小即可。 发现理解错题意了,不饿能删除字符串两端的颜色是指要三个相同的连续然后删除中间的。class Solution { public boolean winnerOfGame(String colors) { ..原创 2022-03-22 09:50:53 · 1234 阅读 · 0 评论 -
D20 LeetCode 653.两数字和IV - 输入BST(简单)
一、题目原创 2022-03-21 19:02:25 · 96 阅读 · 0 评论 -
D19 LeetCode 2039.网络空闲的时刻(中等)
一、题目二、思路(自己)利用广度优先算法,不难算class Solution { public int networkBecomesIdle(int[][] edges, int[] patience) { Queue<Integer> q = new LinkedList<>(); q.offer(0); Integer[] length = new Integer[patience.length].原创 2022-03-20 19:17:03 · 137 阅读 · 0 评论 -
D18 LeetCode 606.根据二叉树创建字符串(简单)
一、题目二、思路(自己)感觉要用递归啊,得思考一下 节点有四种情况,分别如下: 无左子节点,无右子节点:返回 (val) 无左子节点,有右子节点:返回 ((this.val+()+tree(right)) 有左子节点,无右子节点:返回 (this.val+tree(left)) 有左子节点,有右子节点:返回 (this.val+tree(left)+tree(right)) class Solution { public String tree...原创 2022-03-19 18:27:07 · 342 阅读 · 0 评论 -
D17 LeetCode 2043.简易银行系统(中等)
一、题目二、思路(自己)这道题跟前天的那个设计链表的题目相似,都是自己设计一个类,不过那个要难挺多,因为要求要O(1)的时间复杂度。 挺简单的,就比详述自己的一些思路啥的,就普通设计类,也没有涉及多线程。class Bank { List<Long> list= new ArrayList<>(); int count; public Bank(long[] balance) { for(long l:balance){原创 2022-03-18 10:25:39 · 6695 阅读 · 0 评论 -
D16 LeetCode 720.词典中最长的单词(简单)
一、题目二、思路(自己)用TreeMap来装words里面的单词,重写比较器(先看长度,长度长的排前面,长度如果相等,则看字典序,字典序小的放前面) 得到的是一个已经排好序的字符串集合,再从前往后遍历,遇见满足条件的输出即可 今天的题目是挺简单的 class Solution { public String longestWord(String[] words) { Set<String > s=new TreeSet<>(new Com原创 2022-03-17 09:59:21 · 466 阅读 · 0 评论 -
D15 LeetCode 432.全O(1)的数据结构(困难)
一、题目class AllOne { public AllOne() { } public void inc(String key) { } public void dec(String key) { } public String getMaxKey() { } public String getMinKey() { }}/** * Your AllO.原创 2022-03-16 13:54:53 · 944 阅读 · 0 评论 -
D14 LeetCode 2044.统计按位或能得到最大值的子集数目(中等)
一、题目二、思路(自己)首先我们要知道按位或是什么意思,即取参与运算的两数各对应的二进制相或,题目给出条件元素大于0,所以不用考虑为负数的情况。 nums子集按位或,其本身肯定是按位或最大的。所以先让其本身按位或再依次计算其子集按位或的结果。class Solution { public int countMaxOrSubsets(int[] nums) { int count=1; Integer[] x=new Integer[nums.leng原创 2022-03-15 11:15:12 · 7967 阅读 · 0 评论 -
D12 LeetCode 393.UTF-8编码验证(中等)
一、题目二、思路(自己) 首先理解题意是指,输入一个数组,然后判断这个数组的二进制编码格式是否为有效的UTF-8编码。 UTF-8字符长度为1~4个字节,所以data.length<=4 &&>=1,先判断输入数组的长度。 若data.length==1,只需判断data[0]的值<128即可。 否则,先得到data.length,根据length值判断data[0]的取值范围,以及后续元素需要>=128 &原创 2022-03-13 12:03:53 · 396 阅读 · 0 评论 -
D13 LeetCode 599.两个列表的最小索引和(简单)
一、题目二、思路(自己) 先遍历两个数组,找出元素值相等的元素同时记录下标和,这时候我想到了要用到map,但是map不允许键值重复,我就一直在纠结怎么不让他更新或者记录相等键的元素值。然后想破了头也没想清楚,最后想着用list来记录,把下标和放在字符串前面,然后通过sort工具类的排序算法可以把他们按照下标的大小升序排列,但是我没想到的是如果下标和是两位数的话,那就行不通了,如下代码: class Solution { public String[] findRestaura.原创 2022-03-14 14:37:42 · 8353 阅读 · 0 评论 -
D11 LeetCode 590.N叉树的后序遍历(简单)
题目class Node { public int val; public List<Node> children; public Node() {} public Node(int _val) { val = _val; } public Node(int _val, List<Node> _children) { val = _val; children = _c.原创 2022-03-12 10:32:12 · 1149 阅读 · 0 评论 -
D10 LeetCode 2049.统计最高分的节点数目
思路(自己):除了根节点无父节点外,去除其余节点必定会与父节点分离。每次切割之后都要考虑消除了几个分支。若消除的是k节点,查询数组,(for i=0;i<a.length;i++)a[i]==k的情况必有0~2个。若为0个,则该节点为叶子节点,分数为a.length-1; 若为1个,则切割完之后有两部分。(怎么确定两部分的数目呢?) 若为2个,则切割完之后有三部分。确定以节点K为根节点的子树所含元素大小,...原创 2022-03-11 17:30:39 · 109 阅读 · 0 评论 -
D09 LeetCode 589.N叉树的前序遍历
LeetCode原创 2022-03-10 16:22:53 · 731 阅读 · 0 评论