
算法 基础
算法和Jvm,并发等知识的总结
杭家y
坚持学习
联系邮箱:hg2j@qq.com
展开
-
十进制和26进制转换算法
十进制和26进制转换算法public static void main(String[] args) { int n = 0; n = getn(n); System.out.println(n); } //将自然数n 转为26进制数N String getN(int n) { String N = ""; while (n > 0) { int m = n % 26;/原创 2021-11-15 09:24:32 · 1193 阅读 · 0 评论 -
Java实现单链表的增删改查
/** * @Description : 链表测试 * @Author : ch * @Date: 2020-11-20 */public class LinkNode { public static void main(String[] args) { LinkedList L = new LinkedList(); L.init(); System.out.println("输入链表节点:"); Scanner scann原创 2020-11-20 11:42:13 · 243 阅读 · 0 评论 -
查找数组中重复元素的个数(Map)
String[] a = {"a","b","c","d","a"}; HashMap<String, Integer> map = new HashMap<>(); for (int i = 0; i < a.length; i++) { if(map.get(a[i])!=null){ map.put(a[i],map.get(a[i])+1); }else {原创 2020-11-18 14:41:17 · 1133 阅读 · 0 评论 -
计算机网络知识!扫盲!
大二逃课总结的1.2w字的计算机网络知识!扫盲!原创 2020-11-17 11:43:05 · 238 阅读 · 0 评论 -
算法题刷题的一点感受和技巧
算法题刷题的一点感受和建议原创 2020-06-25 14:39:58 · 396 阅读 · 0 评论 -
24张图,九大数据结构安排得明明白白!
24张图,九大数据结构安排得明明白白!转载 2020-05-26 14:43:34 · 171 阅读 · 0 评论 -
拜托,别问我什么各种Tree了,干就完事!
拜托,别问我什么各种Tree了,干就完事!转载 2020-05-03 12:42:33 · 113 阅读 · 0 评论 -
贪心算法 and 动态规划
贪心算法(Greedy Algorithm) 简介贪心算法,又名贪婪法,是寻找最优解问题的常用方法贪婪法的基本步骤:步骤1:从某个初始解出发;步骤2:采用迭代的过程,当可以向目标前进一步时,就根据局部最优策略,得到一部分解,缩小问题规模;步骤3:将所有解综合起来。事例一:找零钱问题假设你开了间小店,不能电子支付,钱柜里的货币只有 25 分、10 分、5 分和 1 分四种硬币,如果...原创 2020-04-15 21:30:20 · 201 阅读 · 0 评论 -
字符串数组转成矩阵
private final static int[][] next = {{0, -1}, {0, 1}, {-1, 0}, {1, 0}};private int rows;private int cols; char[][] matrix = buildMatrix(array);private char[][] buildMatrix(char[] array) { ...原创 2020-04-15 21:10:30 · 1247 阅读 · 0 评论 -
《剑指offer》思路与实现总结--Java
剑指offer所有的题目总结原创 2020-04-15 20:13:17 · 210 阅读 · 2 评论 -
[剑指Offer]10.1 斐波那契数列(思路+分析)
解题思路如果使用递归求解,会重复计算一些子问题。例如,计算 f(10) 需要计算 f(9) 和 f(8),计算 f(9) 需要计算 f(8) 和 f(7),可以看到 f(8) 被重复计算了。递归是将一个问题划分成多个子问题求解,动态规划也是如此,但是动态规划会把子问题的解缓存起来,从而避免重复求解子问题。...原创 2020-04-07 21:07:31 · 171 阅读 · 0 评论 -
[剑指Offer] 9. 用两个栈实现队列(思路+分析)
题目描述用两个栈来实现一个队列,完成队列的 Push 和 Pop 操作。解题思路in 栈用来处理入栈(push)操作,out 栈用来处理出栈(pop)操作。一个元素进入 in 栈之后,出栈的顺序被反转。当元素要出栈时,需要先进入 out 栈,此时元素出栈顺序再一次被反转,因此出栈顺序就和最开始入栈顺序是相同的,先进入的元素先退出,这就是队列的顺序。Stack<Integer>...原创 2020-04-07 21:04:02 · 116 阅读 · 0 评论 -
[剑指Offer] 8.二叉树的下一个结点(思路+分析)
题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。解题思路① 如果一个节点的右子树不为空,那么该节点的下一个节点是右子树的最左节点;② 否则,向上找第一个左链接指向的树包含该节点的祖先节点。public TreeLinkNode GetNext(TreeLinkNode pNode) { ...原创 2020-04-07 20:59:05 · 124 阅读 · 0 评论 -
[剑指Offer] 7.重建二叉树(思路+分析)
重建二叉树前序遍历的第一个值为根节点的值,使用这个值将中序遍历结果分成两部分,左部分为树的左子树中序遍历结果,右部分为树的右子树中序遍历的结果。// 缓存中序遍历数组每个值对应的索引private Map<Integer, Integer> indexForInOrders = new HashMap<>();public TreeNode reConstruct...原创 2020-04-07 20:52:16 · 129 阅读 · 0 评论 -
[剑指Offer] 5.替换空格(两种思路)
替换空格描述和解析resolution1:定义一个新的字符串,遇到了空格就添加“%20”,否则就copy原来的字符 /** * 运行时间:25ms * 占用内存:9492k * @param str * @return */ public String replaceSpace(Str...原创 2020-04-07 20:15:38 · 153 阅读 · 0 评论 -
[剑指Offer] 4.二维数组中的查找(两种思路)
二维数组中的查找解题思路从右上角开始查找。矩阵中的一个数,它左边的数都比它小,下边的数都比它大。因此,从右上角开始查找,就可以根据 target 和当前元素的大小关系来缩小查找区间。复杂度:O(M + N) + O(1)public boolean Find(int target, int[][] matrix) { if (matrix == null || matrix.len...原创 2020-04-07 19:54:34 · 146 阅读 · 0 评论 -
[剑指Offer] 3.数组中重复的数字(两种思路)
NowCoder题目描述在一个长度为 n 的数组里的所有数字都在 0 到 n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复几次。请找出数组中任意一个重复的数字。Input:{2, 3, 1, 0, 2, 5}Output:2解题思路要求复杂度为 O(N) + O(1),也就是时间复杂度 O(N),空间复杂度 O(1)。因此不能使用排序的...原创 2020-04-06 20:57:34 · 148 阅读 · 0 评论 -
八大基础排序总结
文章目录冒泡排序选择排序插入排序快速排序归并排序堆排序希尔排序基数排序(桶排序)总的来说:快速排序是用得比较广泛的一个排序,也是经常出现的一个排序,应该重点掌握~冒泡排序 public static void main(String[] args) { int[] arrays = {2, 3, 4, 5, 1, 5, 2, 9, 5, 6, 8, 3, 1}; ...原创 2020-03-26 19:52:46 · 249 阅读 · 0 评论 -
选择排序(分析+代码调优)
选择排序 :从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处分析// 第一次 int x = 0; for (int y = x + 1; y < arr.length; y++) { if (arr[y] < arr[x]) { int temp = arr[x]; arr[x] = arr[y]; a...原创 2020-03-16 13:54:21 · 110 阅读 · 0 评论 -
快速排序(图解分析+代码调优)
快速排序分析图解调优代码分析1、快速排序的基本思想:快速排序使用分治的思想,通过一趟排序将待排序列分割成两部分,其中一部分记录的关键字均比另一部分记录的关键字小。之后分别对这两部分记录继续进行排序,以达到整个序列有序的目的。2、快速排序的三个步骤:(1)选择基准:在待排序列中,按照某种方式挑出一个元素,作为 “基准”(pivot)(2)分割操作:以该基准在序列中的实际位置,把序列分成...原创 2020-03-19 22:16:33 · 204 阅读 · 0 评论 -
冒泡排序(分析+代码调优)
传送门 1、冒泡排序的介绍 &nbs...原创 2020-03-06 19:06:45 · 239 阅读 · 0 评论