力扣刷题心得
文章平均质量分 51
MLTcola
这个作者很懒,什么都没留下…
展开
-
9、力扣刷题心得(七)队列和栈
下面是使用内置队列库及其常见操作的一些示例 // "static void main" must be defined in a public class. public class Main { public static void main(String[] args) { // 1. Initialize a queue. Queue<Integer> q = new LinkedList(); // 2. Get the fir转载 2021-12-04 11:39:42 · 135 阅读 · 0 评论 -
8、力扣刷题心得(六)优先队列<转载>
Java的优先队列PriorityQueue详解 Java的优先队列PriorityQueue详解 - 程序咖啡 - 博客园转载 2021-10-09 11:03:15 · 68 阅读 · 0 评论 -
7、力扣刷题心得(五)哈希表
class Solution { public static void main (String[] args) { Data aData = new Data(33); HashTable aHashTable = new HashTable(10); aHashTable.insert(aData); Data atData = aHashTable.find(33); System.out.println(atData.get...原创 2021-10-05 16:26:47 · 138 阅读 · 0 评论 -
6、力扣刷题心得(五)时间复杂度与空间复杂度
转载于:http://blog.csdn.net/daijin888888/article/details/66970902 一、算法的时间复杂度定义 在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度。记作:T(n)=O(f(n))。它表示随问题n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称为时间复杂度。其中,f(n)是问题规模n的某个函数。 ...转载 2021-10-02 14:53:55 · 582 阅读 · 0 评论 -
5、力扣刷题心得(四)创建链表及链表操作
在力扣上刷题的时候,总是提供好了相应的链表,这在实际中不切实际,所以这一节来创建链表及一些基础功能。 在编写相应代码时,说一个非常重要的事! 在处理链表问题时,如果可以,可以先创建虚拟头结点(如果需要虚拟尾结点也可创建),这样会避免很多不必要的麻烦,就比如使原来的首节点变成了中间的节点,操作就和其他节点一样了。 ...原创 2021-10-02 10:47:28 · 344 阅读 · 0 评论 -
4、力扣刷题心得(三)排序总结
这一节介绍一下排序的一些高级算法。 (1)归并排序(时间复杂度 O(N*logN)) 归并排序算法的核心就是将两个有序数组归并成一个。 如何得到两个有序数组呢?就用到了递归的概念。将整个数组分为两个数组,对两个数组分别进行排序,就得到了两个有序数组,怎么排序呢?再将其分成两个数组。。。。。。 缺点:他需要在存储器中有另一个大小等于被排序的数据项数目的数组,如果初始数组几乎占满了整个存储空间,则归并排序不能工作。 ...原创 2021-10-01 15:22:40 · 99 阅读 · 0 评论 -
3.力扣刷题心得(三)排序总结
首先介绍一些简单排序算法,在下一节准备介绍一些高级排序。 (1)冒泡排序(时间复杂度 O(N^2)) 冒泡排序算法运行起来非常慢,但是在概念上它是排序算法中最简单的,因此冒泡排序算法在刚开始研究排序技术时是一个非常好的算法。 冒泡排序算法的原理如下(复制于百度百科): 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 .原创 2021-09-29 17:31:03 · 91 阅读 · 0 评论 -
2.力扣刷题心得(二)递归
(一)递归解释 (1)通俗来说,递归就是一个方法调用自己(当然会有终止条件)。 (2)递归所拥有的关键特征: 1、调用自身 2、调用自身是为了解决更小的问题,当然这个小问题可以用自身的方法 解决。 3、拥有终止条件,试想如果没有终止条件的话,程序会...原创 2021-10-01 15:52:54 · 251 阅读 · 0 评论 -
1.力扣刷题心得(一)数组
(一)数组相关 1、数组是存放在连续内存空间上的相同类型数据的集合。 2、二分法只能应用于有序数组。 3、数组多用于频繁使用索引的场合,链表多用于频繁插入删除的场合。 4、链表的存储空间要比相同容量的数组大。 5、防止溢出的写法。有时在比较时数值会超出定义的类型的范围,就可以用防止溢出的写法,如: int a = 11123; int b = 123456789; // 若相比较a的平方与b的大小,可以 if (b/a > a) {} // 而不是 if (a * a < b) .原创 2021-09-27 21:34:34 · 115 阅读 · 0 评论