算法刷题
主要是leetcode上面的刷题代码
达不溜Q
如果没有奇迹,那就去创造一个!
展开
-
Java快速排序(图文+注释代码)
导语: 最近在准备春招,所以有计划的在复习java相关的知识,整理了一些笔记分享出来。1)算法思路:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。2)快速排序使用分治法来把一个串(list)分为两个子串(sub-lists):从数列中挑出一个元素,称为 “基准”(pivot); 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在.原创 2021-03-27 00:04:21 · 239 阅读 · 0 评论 -
leetcode 1. 两数之和
导语:最近字节一面的一道算法题是三数之和,于是想到了两数之和、四数之和等一些列题目,所以这里记录一下解这一类题的一个思路,当然先从最简单的两数之和开始啦!题目:方法一:(当然是懒人必备的暴力法啦,时间复杂度O(N²)、空间复杂度O(1))只需要两层循环,依次遍历就可以啦int[] twoSum(int[] nums, int target) { for (int i = 0; i < nums.length; i++){ for (int j = i +原创 2021-03-25 22:40:18 · 142 阅读 · 0 评论 -
leetcode 567. 字符串的排列(java版滑动窗口法)
本题解思想源于labuladond算法框架 public boolean checkInclusion(String s1, String s2) { HashMap <Character,Integer> window = new HashMap<Character,Integer>(); HashMap <Character,Integer> need = new HashMap<Character,Integer原创 2021-03-24 16:03:57 · 129 阅读 · 0 评论 -
leetcode 206.反转链表(Java版迭代法)
双指针迭代法:我们可以申请两个指针,第一个指针叫 pre,最初是指向 null 的。第二个指针 cur 指向 head,然后不断遍历 cur。每次迭代到 cur,都将 cur 的 next 指向 pre,然后 pre 和 cur 前进一位。都迭代完了(cur 变成 null 了),pre 就是最后一个节点了。tips:多一个中间变量t来暂时存储cur的下一个变量class Solution { public ListNode reverseList(ListNode head原创 2021-03-23 22:08:16 · 75 阅读 · 0 评论 -
leetcode 76. 最小覆盖子串(java版滑动窗口)
本题解思路参考labuladong的算法题解class Solution { public String minWindow(String s, String t) { //window 和 need为两个计数器 HashMap <Character,Integer> window = new HashMap<Character,Integer>(); HashMap <Character,Integer> n原创 2021-03-23 21:33:05 · 164 阅读 · 0 评论