
算法题目
SaMorri
学习树洞
展开
-
链表合集(Java版本)
1. 反转链表Leetcode 传送门:反转链表public static ListNode reverseList(ListNode head) { if (head == null) return head; ListNode g = new ListNode(-1); ListNode p = head; g.next = p; while (p.next != null) { ListNod原创 2021-06-30 16:13:29 · 117 阅读 · 0 评论 -
Java 快速排序 递归版
public class quicksort { //找基准分区 public static int getMiddle(int[] array, int low, int high) { int tmp = array[low]; while (low < high) { while (low < high && array[high] > tmp) { high--;原创 2021-06-30 10:48:10 · 174 阅读 · 0 评论 -
LeetCode刷题笔记——排序(插入排序、归并排序、桶排序)
1. 插入排序(链表)来源:147题使用插入排序的方法对链表进行排序,其时间复杂度是 O(n2)O(n^2)O(n2),nnn是链表的长度:class Solution { public ListNode insertionSortList(ListNode head) { if (head == null) { return head; } //创建哑节点 dummyHead //引入哑节点是为了便于在原创 2020-12-02 11:24:28 · 201 阅读 · 0 评论 -
LeetCode刷题笔记——堆(Arrays、PriorityQueue、HashMap)
1. 数组排序Arrays.sort()Arrays中的sort()方法主要是针对各种数据类型(基本数据类型和引用对象类型)的数组元素排序引用对象类型数组的排序sort()方法要用到接口Comparator<T>,对其排序内部的比较函数compare()进行重写,以便于我们按照我们的排序要求对引用对象数组极性排序,默认是升序排序,但可以自己自定义成降序排序。2. 优先队列PriorityQueueJava优先队列详解class KthLargest { //优先队列:每次取出的原创 2020-09-20 12:06:39 · 201 阅读 · 0 评论 -
LeetCode刷题笔记——栈(Stack、ArrayList、LinkedList、StringBuilder)
1. Stack 类栈是Vector的一个子类,它实现了一个标准的后进先出的栈。堆栈只定义了默认构造函数,用来创建一个空栈。 堆栈除了包括由Vector定义的所有方法,也定义了自己的一些方法。2. ArrayList类get()方法用于检索Arraylist中给定索引处的元素...原创 2020-09-20 12:03:36 · 277 阅读 · 0 评论 -
Leetcode/剑指Offer 刷题记录(2)
题目描述有效的字母异位词:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false题解哈希表法:为了检查 ttt 是否是 sss 的重新排列,我们可以计算两个字符串中每个字母的出现次数并进行比较。因为 SSS 和 TTT 都只包含 A−ZA-ZA−Z 的字母,所以一个简单的 26 位计数器表原创 2020-08-05 11:39:00 · 150 阅读 · 0 评论 -
Leetcode/剑指Offer 刷题记录(1)
题目描述给定一个长度为n的数组A,求数组B,B[i] = A[0]A[1]…A[i-1]*A[i+1]…A[n-1]。要求不能使用除法。题解假设:left[i] = A[0]*…A[i-1]right[i] = A[i+1]…A[n-1]所以:B[i] = left[i] * right[i]如图:可知:left[i+1] = A[0]…A[i-1]A[i]right[i+1] = A{i+2]…*A[n-1]于是,left[i+1] = left[i] * A[i]righ原创 2020-07-25 14:02:47 · 164 阅读 · 0 评论