![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
wings专栏
程序亦非猿
展开
-
排序算法
//==============冒泡排序================= /** * 普通冒泡排序 * * @param array * @return */ public static int[] bubbleSort(int[] array) { if (array == null) { ...原创 2020-03-18 15:51:56 · 81 阅读 · 0 评论 -
翻转二叉树——二叉树的镜像
题目 操作给定的二叉树,将其变换为源二叉树的镜像。 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5 分析 思路:先前序遍历...原创 2020-03-17 19:48:29 · 269 阅读 · 0 评论 -
找出数组中出现次数超过一半的数
题目 找出数组中出现次数超过一半的数,时间复杂度O(n)。 分析 把每个数和出现的次数以key-value的形式存储在map中,每次循环都把当前数出现的次数和数组长度的一半作比较即可,例如{1,2,2,3,3,3,3,3,4},3出现的次数超过了数组长度的一半。 实现 public static int MoreThanHalfNum_Solution(int[] array){ ...原创 2020-03-12 19:39:55 · 156 阅读 · 0 评论 -
二叉树遍历
题目原创 2020-03-12 16:59:27 · 83 阅读 · 0 评论 -
用单向链表表示十进制整数,求两个正整数的和
题目 用单向链表表示十进制整数,求两个正整数的和。如,1234+34=1268,注意单项链表的方向从前向后,不允许使用其他数据结构。 如下图: 分析: 正常计算 1 2 3 4 3 4 1 2 6 8 思路结果 4 3 2 1 4 3 8 6 2 1 1 2 6 8 就是单向链表的翻转,然后进行计算,然后在翻转,即可得出答案 实现 public class Main { public ...原创 2020-03-12 00:46:55 · 1147 阅读 · 1 评论 -
单向链表反转
题目 给定如下链表的节点定义: // C语言定义节点 struct LinkNode { int value; LinkNode* next; }; 比如有一个链表是这样的,1->2->3->4->5,反转后成为 5->4->3->2->1。请实现函数 LinkNode* Reverse(LinkNode* header); 分析 实现链表反...原创 2020-03-11 22:57:34 · 238 阅读 · 0 评论 -
求解连续子数组的最大和
连续子数组的最大和原创 2020-03-09 20:43:09 · 123 阅读 · 0 评论 -
一千万个数高效求和
背景 “一千万个数如何高效求和?”,当看到这个问题的时候,第一反应就是分段求和再相加,而JDK1.8提供的LongAdder类,就是通过分段求和再汇总的思想设计的。为了对比实践,我们先用单线程直接求和,然后再使用多线程求和。 单线程求和 // 单线程直接求和 public static int singleThreadSum(List<Integer> list){ ...转载 2020-03-03 16:59:00 · 796 阅读 · 0 评论