
记录自己的算法
文章平均质量分 51
魔笑
一只努力奋斗的小白
展开
-
精选leetCode第218题天际线(堆(优先队列)
大家好我是魔笑,今天带给大家的是优先队列,写题的目的是为了让自己更能理解这题。也方便后续回顾,也能分享给对这题比较感兴趣的小伙伴,这道题还是比较值的研究一下的,逻辑还是比较难的,下面就是我对这道题的解答,和理解题目:城市的天际线是从远处观看该城市中所有建筑物形成的轮廓的外部轮廓。给你所有建筑物的位置和高度,请返回由这些建筑物形成的天际线。首先看一下例题,这是从leetCode题目截取出来的:下面每个长方体,代表一个建筑,每个建筑物的几何信息由数组buildings表示,其中三元组b...原创 2021-09-04 21:31:25 · 436 阅读 · 0 评论 -
精选leetCode第32题最长有效括号(计数,递归)
大家好,我是魔笑,我们一起加油。题目:给你一个只包含'('和')'的字符串,找出最长有效(格式正确且连续)括号子串的长度。示例1:输入:s = "(()"输出:2解释:最长有效括号子串是 "()"示例2:输入:s = ")()())"输出:4解释:最长有效括号子串是 "()()"示例3:输入:s = "((()))()"输出:8解释:最长有效括号子串是 "((()))()"题解:1,当我们从左往右遍历时,我们计算左右括号的数量,...原创 2021-08-22 01:11:46 · 300 阅读 · 0 评论 -
精选leetCode得42题接雨水(栈)
大家好我是魔笑,今天给大家带来的是用栈解决接雨水的算法题,我的题解,比较简洁明了,并且我用了两种代码方便大家理解,如果喜欢,请给一个点赞收藏哦,话不啰嗦,直入主题。题目:给定n个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例1:输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位...原创 2021-08-21 23:59:39 · 459 阅读 · 1 评论 -
精选leetCode第23题合并k个升序链表(链表)---带你探索链表
大家好,我是魔笑,我来了,我带着链表来了,下面我将一步一步的讲解这道题,也将让你对链表更好的理解,如果你能感叹,链表是这么会事啊。涨见识了,那就太棒了。哈哈,话不啰嗦。直入主题,文章不易,如果对你有帮助,请给一个素质三连,好人一生平安。题目:给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[ 1.原创 2021-08-11 23:57:40 · 436 阅读 · 3 评论 -
leetCode第209题长度最小的子数组(滑动窗口算法)
题目:给定一个含有n个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组[numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。注意:1,是连续的子数组2,其和 ≥ target 的长度最小的示例 1:输入:target = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组[4,3]是该条件下的长度最小的子数组。...原创 2021-08-03 22:28:49 · 218 阅读 · 1 评论 -
leetCode第14题最长公共前缀(暴力解法)
大家好,我是魔笑,这道题没啥好说的,看看代码,解解闷呗,常规算法,暴力解法。我们一起加油,对你有帮助请给一个素质三连题目:编写一个函数来查找字符串数组中的最长公共前缀,如果不存在公共前缀,返回空字符串""。示例 1:输入:strs = ["flower","flow","flight"]输出:"fl"代码: public String longestCommonPrefix1(String[] strs) { if(strs==null){ .原创 2021-08-01 22:13:31 · 195 阅读 · 0 评论 -
leetCode第76题最小覆盖字串(滑动窗口算法)
大家好,我是魔笑,下面是我分享的滑动窗口算法题,这道题我真是弄了好久,写完,拿到leetCode验证,然后一遍一遍的纠正。真的不容易,最终提交成功,如果对你有帮助,请给个赞啊亲。我们一起加油题目:给你一个字符串s、一个字符串t。返回s中涵盖t所有字符的最小子串。如果s中不存在涵盖t所有字符的子串,则返回空字符串""。注意:对于t中重复字符,我们寻找的子字符串中该字符数量必须不少于t中该字符数量。 如果s中存在这样的子串,我们保证它是唯一的答案。示...原创 2021-08-01 22:00:20 · 354 阅读 · 1 评论 -
经典的位运算(算法),大厂都在考的算法
大家好,我是魔笑,我又来了,今天给大家分享一篇,位运算。了解位运算,那么我们不得不了解,葫芦娃七兄弟了什么是葫芦娃七兄弟,大家第一个反映肯定是,动画片,金刚葫芦娃,葫芦娃,救爷爷。哈哈,经典的同年的动画片下面的葫芦娃起兄弟,是大家学习位运算不得不掌握的基本知识了:运算符 名称 英文 含义 & 与 and 同为1则为1,否则就是0 | 或 or 只要有一个是1,则结果就为1 ^ 异或 xor 相同.原创 2021-07-17 21:09:55 · 830 阅读 · 1 评论 -
串联所有单词的子串(双指针算法)
hello,大家好,我是魔笑,今天给大家带来的是lettocde的30题。今天唠叨一下自己写博客的目的我写博客,也是在记录自己学习的每一道题,和自己学习的东西,为什么要写博客,我的想法是,虽然经常学习,但是,如果不记下来,过段时间,就遗忘了。我之前也学了很多东西,但是过段时间有点记不清了,就感觉和没学差不多。学习就没什么动力了,如果我记下来,看博客越来越多,感觉这都是自己的知识,学习也就有了动力。我希望小伙伴们,也都把自己学的东西记录下来,也不一定要写博客,但一定要归纳总结。话不多说,看题:原创 2021-07-17 10:16:52 · 253 阅读 · 1 评论 -
无重复字符的最长子串(滑动窗口算法,暴力双指针)
题目:给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。示例 :输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。一,滑动双指针如图:解释:如果,set集合不包含end+1指针所在的字符,再将end+1指针所在字符加入set,并将指针end+1(后移),则窗口增大,直到set集合包含end+1指针所在的字符,求出最大字串,删除Set中start指针所在的字符,start加1(指针后移)...原创 2021-07-11 23:05:01 · 210 阅读 · 1 评论 -
合并区间(暴力算法)
题目:以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间示例 1:输入:intervals = [[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].代码: public static int[]原创 2021-07-07 21:04:23 · 224 阅读 · 0 评论 -
螺旋矩阵(暴力算法)
题目:给你一个m行n列的矩阵matrix,请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]题解: public static void main(String[] args) { int[][] matrix = {{1, 2, 3, 4}, {5, 6, 7, 8}, ...原创 2021-07-06 21:26:51 · 8571 阅读 · 0 评论 -
N皇后(回溯算法)
题目n皇后问题 研究的是如何将 n个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。等价于要求任何两个皇后都不能在同一行、同一列以及同一条斜线上给你一个整数 n ,返回所有不同的n皇后问题 的解决方案。如图:黄色代表放置皇后的位置每一种解法包含一个不同的n 皇后问题的棋子放置方案,该方案中'Q'和'.'分别代表了皇后和空位例如:输入:n = 4输出:[[".Q..","...Q","Q...","..Q."],["..Q.","Q...","...原创 2021-06-30 22:04:25 · 1104 阅读 · 0 评论 -
算法(暴力算法)
题目:给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"]输出:[ ["ate","eat","tea"], ["nat","tan"], ["bat"]]暴力算法:public static void groupAnagrams(){ String[] myStr={"eat","tea","tan","ate","nat",原创 2021-06-22 10:01:24 · 568 阅读 · 0 评论 -
算法(回溯算法)
public class MySort { public static void sort() { int[] nums = {1, 2, 3, 4}; int length = nums.length; //用于存储得到的结果 List<int[]> result = new ArrayList<>(); //用于标识每个元素的状态,并且进行回溯 boole...原创 2021-06-16 23:19:56 · 181 阅读 · 0 评论 -
算法题四(贪心算法)
题目: * 给定一个非负整数数组,你最初位于数组的第一个位置。** 数组中的每个元素代表你在该位置可以跳跃的最大长度。** 你的目标是使用最少的跳跃次数到达数组的最后一个位置。** 假设你总是可以到达数组的最后一个位置。...原创 2021-06-15 23:25:02 · 211 阅读 · 7 评论 -
算法题(动态规划)
题目:* 给定一个字符串 (s) 和一个字符模式 (p) ,实现一个支持 '?' 和 '*' 的通配符匹配。* '?' 可以匹配任何单个字符。* '*' 可以匹配任意字符串(包括空字符串)。* 两个字符串完全匹配才算匹配成功。* 说明:* s 可能为空,且只包含从 a-z 的小写字母。* p 可能为空,且只包含从 a-z 的小写字母,以及字符 ? 和 * hello啊,小伙伴么,今天给大家分享一道算法题,这题的解法我是用动态规划去做的,这...原创 2021-06-13 00:55:26 · 344 阅读 · 0 评论 -
算法题二(递归加二分法)
一,题目 有这样一个长度为n数组,从小到大,再从小到大,例如:[5,6,7,8, 3,4,5,6],求出它的最小值?public class testMain { public static void main(String[] args) { Integer[] arr=new Integer[]{5,6,7,8,1,2,3,4}; Integer min = getMin(arr); System.err.println(m...原创 2021-06-09 22:20:16 · 96 阅读 · 0 评论 -
算法题一
一,题目 实现并返回,2个长整数的字符串相加的和,比如”1234567890” + “99” = “1234567989”,不能直接转成bigdeciaml 或 long相加public class Coding { public static void main(String[] args) { String strA = "1234567890"; String strB = "99"; String s...原创 2021-06-09 22:10:08 · 99 阅读 · 0 评论