
算法
文章平均质量分 62
Shockang
我是Shockang,AI进化比我喝咖啡还快,程序员危机UP!不想被取代,就抱紧读书救命稻草,还能一起边学边吐槽,欢迎来玩!
展开
-
LeetCode 刷题汇总
前言首先声明,笔者不是算法大神,之所以创建这个专栏,是为了对自己LeetCode 刷题历程的一个梳理。本专栏并不适合理解 LeetCode 每道题具体的解决步骤,但是非常适合背诵和记忆,其实对于新手来讲,LeetCode 都是从背题开始的。 另外,笔者推荐的详细解题步骤链接都附在每个解法后面,如果有更适合的解法,欢迎评论区指出。笔者勉强算个算法老鸟,如果有什么算法问题也欢迎来 LeetCode 找我沟通。笔者 LeetCode 主页目录LeetCode 1~5LeetCode 6~10.原创 2021-10-03 22:26:59 · 6522 阅读 · 6 评论 -
LeetCode 131~135
前言本文隶属于专栏《LeetCode 刷题汇总》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构请见LeetCode 刷题汇总Github 配套工程algorithm正文幕布幕布链接126. 单词接龙 II题解My concise JAVA solution based on BFS and DFSBFS+DFSpackage com.shockang.study.algorithm.java.leetcode.leetcode101_原创 2022-02-13 23:58:48 · 751 阅读 · 0 评论 -
LeetCode 126~130
前言本文隶属于专栏《LeetCode 刷题汇总》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构请见LeetCode 刷题汇总Github 配套工程algorithm正文幕布幕布链接126. 单词接龙 II题解My concise JAVA solution based on BFS and DFSBFS+DFSpackage com.shockang.study.algorithm.java.leetcode.leetcode101_原创 2022-02-13 23:58:04 · 677 阅读 · 0 评论 -
LeetCode 121~125
前言本文隶属于专栏《LeetCode 刷题汇总》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构请见LeetCode 刷题汇总Github 配套工程algorithm正文幕布幕布链接106. 从中序与后序遍历序列构造二叉树题解官方题解递归package com.shockang.study.algorithm.java.leetcode.leetcode101_200.leetcode106.solution1;import co原创 2022-01-23 23:57:39 · 300 阅读 · 2 评论 -
LeetCode 116~120
前言本文隶属于专栏《LeetCode 刷题汇总》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构请见LeetCode 刷题汇总Github 配套工程algorithm正文幕布幕布链接106. 从中序与后序遍历序列构造二叉树题解官方题解递归package com.shockang.study.algorithm.java.leetcode.leetcode101_200.leetcode106.solution1;import co原创 2022-01-23 23:57:03 · 346 阅读 · 0 评论 -
LeetCode 111~115
前言本文隶属于专栏《LeetCode 刷题汇总》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构请见LeetCode 刷题汇总Github 配套工程algorithm正文幕布幕布链接106. 从中序与后序遍历序列构造二叉树题解官方题解递归package com.shockang.study.algorithm.java.leetcode.leetcode101_200.leetcode106.solution1;import co原创 2022-01-23 23:56:19 · 330 阅读 · 0 评论 -
LeetCode 106~110
前言本文隶属于专栏《LeetCode 刷题汇总》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构请见LeetCode 刷题汇总Github 配套工程algorithm正文幕布幕布链接106. 从中序与后序遍历序列构造二叉树题解官方题解递归package com.shockang.study.algorithm.java.leetcode.leetcode101_200.leetcode106.solution1;import co原创 2022-01-09 20:58:48 · 559 阅读 · 0 评论 -
LeetCode 101~105
前言本文隶属于专栏《LeetCode 刷题汇总》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构请见LeetCode 刷题汇总正文幕布幕布链接Github 配套工程algorithm101. 对称二叉树题解官方题解递归,两层package com.shockang.study.algorithm.java.leetcode.leetcode101_200.leetcode101.solution1;import com.shock原创 2022-01-09 20:44:11 · 654 阅读 · 0 评论 -
LeetCode 96~100
前言本文隶属于专栏《LeetCode 刷题汇总》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构请见LeetCode 刷题汇总正文幕布幕布链接96. 不同的二叉搜索树题解官方题解动态规划class Solution { public int numTrees(int n) { int[] G = new int[n + 1]; G[0] = G[1] = 1; for (int i原创 2021-11-15 22:25:26 · 6170 阅读 · 7 评论 -
LeetCode 91~95
前言本文隶属于专栏《LeetCode 刷题汇总》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构请见LeetCode 刷题汇总正文幕布幕布链接解码方法官方解法动态规划反转链表 IISimple Java solution with clear explanation双指针+哨兵复原 IP 地址DFS,特殊考虑 0Very simple DFS solution代码实现4层循环,parse and appendWHO CAN原创 2021-11-15 22:12:10 · 6262 阅读 · 5 评论 -
LeetCode 86~90
前言本文隶属于专栏《LeetCode 刷题汇总》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构请见LeetCode 刷题汇总正文幕布幕布链接86. 分隔链表题解Very concise one pass solution双指针class Solution { public ListNode partition(ListNode head, int x) { ListNode smallerHead = new L原创 2021-11-14 22:33:05 · 6226 阅读 · 5 评论 -
LeetCode 81~85
前言本文隶属于专栏《LeetCode 刷题汇总》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构请见LeetCode 刷题汇总正文幕布幕布链接81. 搜索旋转排序数组 II题解官方题解先判断 target 位于中间的,left <= target < mid,mid < target <= rightclass Solution { public boolean search(int[] nums, int原创 2021-11-14 22:24:13 · 6338 阅读 · 9 评论 -
LeetCode 76~80
前言本文隶属于专栏《LeetCode 刷题汇总》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构请见LeetCode 刷题汇总正文幕布幕布链接76. 最小覆盖子串题解简简单单,非常容易理解的滑动窗口思想滑动窗口class Solution { public String minWindow(String s, String t) { if (s == null || s.length() == 0 || t ==原创 2021-11-07 22:44:51 · 10551 阅读 · 5 评论 -
LeetCode 71~75
前言本文隶属于专栏《LeetCode 刷题汇总》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构请见LeetCode 刷题汇总正文幕布幕布链接71. 简化路径题解Java 10-lines solution with stack一点两点特殊处理import scala.collection.mutable.ListBufferobject Solution { def simplifyPath(path: String): Str原创 2021-11-07 22:37:09 · 6624 阅读 · 5 评论 -
LeetCode 66~70
前言本文隶属于专栏《LeetCode 刷题汇总》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构请见LeetCode 刷题汇总正文幕布幕布链接66. 加一题解Java 数学解题if (digits[i] != 0) return digits;class Solution { public int[] plusOne(int[] digits) { for (int i = digits.length - 1; i原创 2021-11-02 00:03:11 · 5844 阅读 · 7 评论 -
LeetCode 61~65
前言本文隶属于专栏《LeetCode 刷题汇总》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构请见LeetCode 刷题汇总正文幕布幕布链接61. 旋转链表题解My clean C++ code, quite standard (find tail and reconnect the list)找到旋转点,注意取模/** * Definition for singly-linked list. * class ListNode(va原创 2021-11-01 23:53:22 · 5870 阅读 · 2 评论 -
LeetCode 56~60
前言本文隶属于专栏《LeetCode 刷题汇总》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构请见LeetCode 刷题汇总正文幕布幕布链接56. 合并区间题解 Above solution with modified inputcur,prevclass Solution { public int[][] merge(int[][] intervals) { Arrays.sort(intervals, (a,原创 2021-10-24 14:10:05 · 6069 阅读 · 7 评论 -
LeetCode 51~55
前言本文隶属于专栏《LeetCode 刷题汇总》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构请见LeetCode 刷题汇总正文幕布幕布链接51. N 皇后题解回溯算法(转换成全排列问题 + 剪枝)- 题解后有相关问题3个set,i,row+i,row-iimport scala.collection.mutable.{ListBuffer, Set}object Solution { val col, diagonal1, di原创 2021-10-24 13:51:19 · 6033 阅读 · 8 评论 -
LeetCode 46~50
前言本文隶属于专栏《LeetCode 刷题汇总》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构请见LeetCode 刷题汇总正文幕布幕布链接46. 全排列题解A general approach to backtracking questions in Java (Subsets, Permutations, Combination Sum, Palindrome Partioning)回溯 + 11import scala.collec原创 2021-10-23 16:23:19 · 6048 阅读 · 10 评论 -
LeetCode 41~45
前言本文隶属于专栏《LeetCode 刷题汇总》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构请见LeetCode 刷题汇总正文幕布幕布链接41. 缺失的第一个正数题解官方题解3 次遍历,小于0都取大,所有取绝对值,小值取反,返回第一个大于0class Solution { public int firstMissingPositive(int[] nums) { int n = nums.length;原创 2021-10-23 16:04:30 · 5855 阅读 · 10 评论 -
LeetCode 36~40
前言本文隶属于专栏《LeetCode 刷题汇总》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构请见LeetCode 刷题汇总正文幕布幕布链接36. 有效的数独题解Short+Simple Java using Stringsset,j/3+b+i/3,左j右iimport scala.collection.mutable.Setobject Solution { def isValidSudoku(board: Array[Ar原创 2021-10-22 23:02:33 · 5914 阅读 · 4 评论 -
LeetCode 31~35
前言本文隶属于专栏《LeetCode 刷题汇总》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构请见LeetCode 刷题汇总正文幕布幕布链接31. 下一个排列题解下一个排列算法详解:思路+推导+步骤,看不懂算我输!后->前,找第一个连续降序前一个数字,然后二分查找刚好比它大的,交换,降序改升序class Solution { public void nextPermutation(int[] nums) {原创 2021-10-19 22:53:43 · 5877 阅读 · 5 评论 -
LeetCode 26~30
前言本文隶属于专栏《LeetCode 刷题汇总》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构请见LeetCode 刷题汇总正文幕布幕布链接26. 删除有序数组中的重复项题解5 lines C++/Java, nicer loopsi遍历,j占位class Solution { public int removeDuplicates(int[] nums) { int i = 0; for (in原创 2021-10-10 18:47:13 · 6030 阅读 · 6 评论 -
LeetCode 21~25
前言本文隶属于专栏《LeetCode 刷题汇总》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构请见LeetCode 刷题汇总正文幕布幕布链接21. 合并两个有序链表题解Java, 1 ms, 4 lines codes, using recursiontemp.next=递归object Solution { def mergeTwoLists(l1: ListNode, l2: ListNode): ListNode = {原创 2021-10-10 11:52:34 · 6049 阅读 · 5 评论 -
LeetCode 16~20
前言本文隶属于专栏《LeetCode 刷题汇总》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构请见LeetCode 刷题汇总正文幕布幕布链接16. 最接近的三数之和题解画解算法:16. 最接近的三数之和sort+双指针+absclass Solution { public int threeSumClosest(int[] nums, int target) { int len = nums.length, re原创 2021-10-06 22:35:41 · 6038 阅读 · 6 评论 -
LeetCode 11~15
前言本文隶属于专栏《LeetCode 刷题汇总》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构请见LeetCode 刷题汇总正文幕布幕布链接11. 盛最多水的容器题解官方题解双指针 left,rightclass Solution { public int maxArea(int[] height) { int maxArea = 0; int low = 0, high = height.leng原创 2021-10-04 23:56:03 · 6032 阅读 · 10 评论 -
LeetCode 6~10
前言本文隶属于专栏《LeetCode 刷题汇总》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构请见LeetCode 刷题汇总正文幕布幕布链接6. Z 字形变换sb+几行+单次循环多长public class Solution { public String convert(String s, int numRows) { if (s == null || s.length() == 0 || numRows <原创 2021-10-03 22:08:20 · 5860 阅读 · 7 评论 -
LeetCode 1~5
前言本文隶属于专栏《LeetCode 刷题汇总》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构请见LeetCode 刷题汇总正文幕布幕布链接1. 两数之和mapclass Solution { public int[] twoSum(int[] nums, int target) { int n = nums.length; Map<Integer, Integer> map = new H原创 2021-10-03 21:57:44 · 5980 阅读 · 11 评论 -
绝对正确的六大排序算法实现
Sorter 特质package com.shockang.study.algorithm.archive.sorttrait Sorter { def sort(a: Array[Int]) protected def swap(a: Array[Int], i: Int, j: Int): Unit = { val tmp = a(i) a(i) = a(j) a(j) = tmp }}3 种 O(n^2)的排序算法冒泡排序package com.s原创 2021-09-11 13:41:46 · 392 阅读 · 5 评论 -
LeetCode 刷题汇总之堆
前言本文隶属于专栏《LeetCode 刷题汇总》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构请见LeetCode 刷题汇总正文23. 合并K个升序链表/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */原创 2021-08-14 10:34:15 · 1087 阅读 · 1 评论 -
LeetCode 刷题汇总之栈
前言本文隶属于专栏《LeetCode 刷题汇总》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构请见LeetCode 刷题汇总正文20. 有效的括号看到括号,第一反应一定是栈Java 和 Scala 版本的栈推荐都使用 ArrayDeque,其中 Scala 也可以使用 ListBuffer,不过 ArrayDeque 的 API 更友好一点Java 版本class Solution { public boolean isVali原创 2021-07-05 00:14:51 · 2372 阅读 · 1 评论 -
数据结构与算法之美六之手写Queue
专栏第六篇,手写 3 种简单的队列数组实现顺序队列单链表实现链式队列数组实现循环队列知识图谱首先呈上和队列相关的知识图谱。队列的 API将队列的共同特征抽象成一个特质package com.shockang.study.algorithm.archive.queue/** * 手写队列 * * @author Shockang */trait Queue[E] { //队列大小 var size: Int //是否为空 def isEmpty: Boo原创 2020-05-31 01:00:01 · 361 阅读 · 0 评论 -
数据结构与算法之美五之手写Stack
专栏第五篇,通过两种方式实现栈。数组单链表知识图谱先呈上关于栈的知识图谱。栈的 API先将栈的公共特征提取出来成为特质。package com.shockang.study.algorithm.archive.stack/** * 将栈的共同特征抽象成特质 * * @author Shockang */trait Stack[E] { //大小 var size: Int //是否为空 def isEmpty: Boolean //入栈 def原创 2020-05-28 00:20:36 · 244 阅读 · 0 评论 -
数据结构与算法之美三之手写LruCache
专栏第三篇,主要通过三种方式实现LRU 缓存淘汰算法数组实现单链表实现单链表+散列表实现Talk is cheap. Show me the code.– Linus Torvalds数组实现package com.shockang.study.algorithm.archive.lruimport java.util.StringJoinerimport scala.util.control.Breaks._/** * 数组实现的 LruCache * * @aut原创 2020-05-24 21:12:19 · 1181 阅读 · 0 评论 -
数据结构与算法之美二之手写LinkedList
专栏第二篇,本文主要内容是手写一个 LinkedList。知识图谱先呈上来链表章节的知识图谱。Talk is cheap. Show me the code.– Linus Torvalds手写 LinkedListpackage com.shockang.study.algorithm.archive.linkedlistimport java.util.{NoSuchElementException, StringJoiner}/** * 手写 LinkedList *原创 2020-05-23 13:06:23 · 1130 阅读 · 0 评论 -
数据结构与算法之美一之手写 ArrayList
学习了王争老师的《数据结构与算法之美》课程后,发现单纯的阅读和听语音吸收知识的效率太低,于是准备开辟一个博客专栏,专门用来讲述自己在学习这门课程中的一些心得体会。本专栏所有代码全部使用 Scala 语言编写,之所以选择 Scala,一方面是因为 Scala 是深入学习大数据必不可少的语言,二是因为如果选择 Java ,Python等语言,类似的博客太多了,同质化可能比较严重,本专栏也是对我 Scala 语言的一次历练。 本专栏从数组开始,之前的一些理论知识例如算法复杂度分析等,网上原创 2020-05-19 00:40:06 · 254 阅读 · 0 评论 -
数据结构与算法之美四之链表常见操作
在学习极客时间的《数据结构与算法之美》专栏时,王争老师提到只要掌握5 个常见的链表操作,就再也不会害怕写链表代码。单链表反转链表中环的检测两个有序的链表合并删除链表倒数第 n 个结点求链表的中间结点说实话,当时听到这里,我立马就激动了,开干!原文链接,顺便帮王争老师打个广告——市面上最好的算法入门教程!思维导图单链表 Scala 实现class ListNode(...原创 2020-05-04 22:33:36 · 276 阅读 · 0 评论