数据结构与算法
shangshanzixu
这个作者很懒,什么都没留下…
展开
-
合并两个无序链表
楼主昨天看到阿里的一道算法题是只使用O(1)的额外空间,合并两个无序链表。乍一看有点奇怪,一般都是双指针算法合并两个有序链表,后面思考过后除了不能像数组能够随机访问链表的每个元素外合并两个有序链表实际上就是先对每个链表进行排序,然后将两个有序链表合并起来。也就是分为两步。对两个链表分别排序将两个有序链表合并起来然后楼主看了一下网上的其他帖子,大部分都是使用选择啊、冒泡啊这种O(n^2)的算法。这效率实在太低了。尽管链表确实不像数组那样访问元素方便,但是通过快慢指针我们页能很快的就找到我们链表中指定的原创 2021-04-07 10:41:19 · 3295 阅读 · 2 评论 -
第九届蓝桥杯Java B组决赛赛题解析
目录1.三角形面积2.最大乘积3.全排列4.整理玩具5.版本分支6.防御力1.三角形面积标题:三角形面积已知三角形三个顶点在直角坐标系下的坐标分别为:(2.3, 2.5)(6.4, 3.1)(5.1, 7.2)求该三角形的面积。注意,要提交的是一个小数形式表示的浮点数。要求精确到小数后3位,如不足3位,需要补零。答案 : 8.795解法1:解法一也是我一开始下意识想到的解法 a* b*sinC /2,分别求出三条边的长度,sinC需要用余弦公式求出cosC 然后求出sinC原创 2020-09-21 19:59:43 · 390 阅读 · 0 评论 -
思路超详细的十大排序算法(Java实现)
目录冒泡排序选择排序插入排序希尔排序归并排序堆排序快速排序计数排序桶排序基数排序冒泡排序冒泡排序的核心思想就是:通过两两交换的方式,将待排序列的最大值放在序列的最后。Java基本模板:import java.util.Arrays;import java.util.Random;public class BubbleSort { public static void main(String[] args) { //普通写法 Random random =原创 2020-08-11 22:38:20 · 248 阅读 · 0 评论