Java算法
我从大数据中找个零
这个作者很懒,什么都没留下…
展开
-
Java实现LRU缓存
前言在操作系统中,页面置换算法中有一种思想叫做LRU,就是选择最近最少使用的页将其置换出去。LRU是一种缓存淘汰策略,那么在Java中结合学习过的基础数据机构如何能实现LRU效果呢?解决思路首先要知道Java的内置容器LinkedHashMap已经可以实现LRU缓存,具体做法如下:class LRUCache<K, V> extends LinkedHashMap<K, V> { private static final int MAX_ENTRIES = 3;原创 2020-08-27 13:04:18 · 372 阅读 · 0 评论 -
LeetCode回文子串问题
前言回文串在刚学习数据结构的时候,老师就给过这样的题目:判断字符串是否为回文串。首先要明白回文串是什么?通俗的讲法就是正着读字符串和反着读字符串是一样的,也就是一个字符串与它的逆转字符串是相等的。在刷leetcode算法题的过程中,遇到过回文串问题的不同演化版本。例如判断字符串是否为回文串,其中只把数字和字母视为有效字符。今天想要把关于动态规划的回文子串问题单独拿出来讲一下,一是为了总结动态规划思想在回文子串问题上的应用,二是为了联系关于字符串相关的题目。问题一 判断字符串是否为回文串这个问题在面原创 2020-08-19 10:54:39 · 207 阅读 · 0 评论 -
LeetCode算法题中的回溯算法小结
前言对于回溯算法,起初刷leetcode题目时,每次编写都需要看题解或者评论,很少自己独立写出代码。后来通过自己的不断领悟,总算是找到了一个技巧编写回溯算法。下面通过分析如何从问题到代码的转变,来总结一下自己对于回溯算法的理解。概述刷了几道算法题之后,发现回溯算法解决的主要问题是组合问题。比如数字 1 2 3 4 5的不重复的全排列,字母a b c d的全排列。这类问题先从人类思维入手,然后再转为代码,个人认为是有一套公式的。问题分析人类思维对于数字 [1, 2, 3 , 4, 5]的全排列,先原创 2020-06-23 11:25:35 · 264 阅读 · 0 评论 -
二叉树根节点到叶子节点路径问题
前言最近在刷leetcode的关于二叉树的题目,碰到几题关于二叉树节点的问题。在这里做一个小结记录自己的理解和知识的长进。leetcode问题路径总和路径总和Ⅱ思路总结前序关于二叉树根节点到叶子节点路径问题,最容易想到的就是打印二叉树所有根节点到叶子节点的路径。这个很容易,就是以二叉树的前序遍历为基础,在遍历过程中记录遍历的节点然后碰到叶子节点就输出结果。代码如下: public static void printAllPath(TreeNode root,String s) {原创 2020-05-19 16:53:16 · 2601 阅读 · 0 评论 -
Java排序之堆排序
概述排序八大算法中的堆排序,是利用了树这种数据结构的思想,将待排序序列按照某种规则构造一个完全二叉树树结构。基本概念大顶堆根结点(亦称为堆顶)的关键字是堆里所有结点关键字中最大者,称为大根堆,又称最大堆(大顶堆)。例如序列1,3,2。3作为树的根节点,1和2分别作为左子节点和右子节点构成的一个大顶堆。小顶堆概念跟它是反过来的,这里就不赘述了。完全二叉树完全二叉树是效率很高的数...原创 2020-04-18 10:11:14 · 233 阅读 · 0 评论 -
LeetCode N皇后问题(Java版)
前言今天在leetcode做了一个N皇后问题的题目,正好刚学习了8皇后问题的求解。所以就按照8皇后问题的解题思路解决了N皇后问题。个人认为8皇后问题的思路容易理解,难就难在思路如何转化为代码。回溯问题在数据结构与算法中是一个很难理解的问题,作为初学者我只能学习别人的思路然后照着样子写出代码。本文简单介绍了8皇后问题的解题思路,由于leetcode题目限制了结果格式,不同的结果格式就需要对代码...原创 2019-12-16 15:18:59 · 311 阅读 · 0 评论 -
Java实现计算表达式的值
需求已知一个只含有()、+ 、-、*、\这五种操作符,数字只是整数,并且空格隔开的表达式字符串,求表达式的值。例如:( 3 + 4 ) * 5 - 6结果为29解题思路给定表达式为中缀表达式,将其转为后缀表达式(逆波兰表达式)然后使用逆波兰表达式求解值。逆波兰表达式求解值得思路:遍历表达式,遇到数值则入栈,遇到计算符则从栈中弹出两个元素然后将计算结果压入栈中。做减和除法运算的时候...原创 2019-12-12 11:05:20 · 4248 阅读 · 2 评论 -
二叉树的路径输出以及快速排序
问题剑指offer上有这么一道题:输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)求解思路:我的解法是将这个题目分成两个步骤,第一个步骤是先得到二叉树满足路径和为输入整数的所有路径;第二步将结果中的数组按照数组长度降序进行排序。代码:i...原创 2019-09-24 10:53:55 · 352 阅读 · 0 评论