![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode刷刷刷
刷题笔记
jackxu1018
这个作者很懒,什么都没留下…
展开
-
剑指Offer 06.反向输出链表中的元素
对于链表反向输出元素看起来非常简答,如果使用java编程的有以下几种思路 思路一、遍历两次链表 第一次遍历的时候计算链表的长度 根据链表的长度来定义数组 第二次遍历链表的时候按照数组的下标从后往前来放入数组中 思路二、遍历一次链表,但是借助栈的数据结构 遍历链表的时候使用栈来存储 将栈中的元素依次弹出 思路三、直接修改链表的指针将正向的指针全部改成反向的,如图所示 总结:简单看来就是将当前的节点的指针指向前一个节点。知道当前节点的下一个节点是空的时候当前节点就是最后一个节点,也就是反...原创 2021-01-20 20:21:08 · 229 阅读 · 0 评论 -
leetcode 697.数组中的度 [熟练使用hashmap、Collections数据结构]
题目链接: https://leetcode-cn.com/problems/degree-of-an-array/ 目标: 计算一个无须数组的度,并求出连续子集满足度不变的子集的最短长度 算法描述: 用三个hashmap,也就是三个key-value对,分别记录数组中每个元素出现的初始位置、结束位置、出现的次数 用collections.max来找出度 定义一个长度small_len初始化为数组长度,在遍历map中的key的过程中更新small_len import java.util.Co原创 2020-11-30 16:26:36 · 139 阅读 · 0 评论 -
leetcode 628. 数组中三个数的最大乘积
题目链接: https://leetcode-cn.com/problems/maximum-product-of-three-numbers/ 算法描述: 三个数的最大乘积,只有两种可能,要么是最大的三个数,要么是最小的两个和最大的数的乘积 方法一:先排序,然后比较大小,但是时间复杂度取决于排序的时间复杂度 class Solution { public int maximumProduct(int[] nums) { int len = nums.length;原创 2020-11-29 21:47:26 · 109 阅读 · 0 评论 -
leetcode414 第三大的数 时间复杂度限制为O(n)
题目链接: https://leetcode-cn.com/problems/third-maximum-number/ 这道题的关键点就是要求算法的复杂度是O(n) 可以知道如果先使用排序排好,遍历排序好的数组,找到第三大的数是不难的,但是这样的算法的复杂度一定是超过O(n)的 那么既然是O(n)意味着我们只能遍历一次数组。 观察samples可以知道 第三大的数和第一、第二大的数是 三个不同的数,故可以用三个数firstnumber、secondnumber、tihrdnumber来表示这三个原创 2020-11-29 21:07:48 · 305 阅读 · 0 评论 -
leetcode剑指03 判断数组是否重复
题目链接: leetcodehttps://leetcode-cn.com/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/ 参考文章: HashSet https://www.cnblogs.com/LiaHon/p/11257805.html 第三种优化算法 https://www.cnblogs.com/le-le/p/12716640.html 时间复杂度是O(n) 完整java代码: package 判断数组中的重复数字; ...原创 2020-11-26 23:11:43 · 116 阅读 · 0 评论