随笔分类 - 数据结构与算法
摘要:流式转换 int[] a = list.stream().mapToInt(Integer::intValue).toArray();
        阅读全文
                
摘要:HashMap解法9ms,40.2 MB class Solution { public int romanToInt(String s) { HashMap<String,Integer> map = new HashMap<>(); map.put("M",1000); map.put("CM"
        阅读全文
                
摘要:数组、链表、树存储方式分析 数组 数组存储方式的分析 **优点:**通过下标方式访问元素,速度快。对于有序数组,还可使用二分查找提高检索速度。 **缺点:**如果要检索具体某个值,或者插入值(按一定顺序)会整体移动,效率较低 每次在底层都需要创建新是数组要将原来的数据拷贝到数组,并插入新的数据 1.
        阅读全文
                
摘要:哈希表 public class HashTableDemo { public static void main(String[] args) { HashTable hashTable = new HashTable(7); String key = ""; Scanner scanner = n
        阅读全文
                
摘要:二分查找 二分查找的思路分析 首先确定该数组的中间的下标 mid= (left +right)/ 2 然后让需要查找的数findVal和a[mid]比较 findVal> ar[mid],说明你要查找的数在mid的右边,因此需要递归的向右查找 findVal< ar[mid],说明你要查找的数在mi
        阅读全文
                
摘要:排序算法 排序的分类: 1)内部排序: 指将需要处理的所有数据都加载到内部存储器中进行排序。 2)外部排序法: 数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。 常见的算法时间复杂度由小到大依次为: O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2)<O(n3)< O(
        阅读全文
                
摘要:递归 递归能解决什么样的问题. 递归用于解决什么样的问题 各种数学问题如:8皇后问题,汉诺塔,阶乘问题,迷宫问题,球和篮子的问题(google编程大赛) 各种算法中也会使用到递归,比如快排,归并排序,二分查找,分治算法等.)将用栈解决的问题-->第归代码比较简洁 迷宫问题 public class 
        阅读全文
                
摘要:中缀转后缀(逆波兰) 具体步骤如下: 初始化两个栈:运算符栈s1和储存中间结果的栈s2; 从左至右扫描中缀表达式; 遇到操作数时,将其压s2; 遇到运算符时,比较其与s1栈项运算符的优先级: 如果s1为空,或栈顶运算符为左括号“(", 则直接将此运算符入栈; 否则,若优先级比栈顶运算符的高,也将运算
        阅读全文
                
摘要:前缀表达式 后缀表达式(逆波兰) public class PolandNotation { public static void main(String[] args) { String suffixExpression = "3 4 + 5 * 6 -"; List<String> list =
        阅读全文
                
摘要:单向环形链表和约瑟夫问题 应用场景 当n=5;m=2,k=1时出队列的顺序:2 4 1 5 3 一个节点也能形成环链 构建思路 构建一个单向的环形链表思路 1.先创建第一个节点,让first指向该节点,并形成环形. 2.后面当我们每创建一个新的节点,就把该节点,加入到已有的环形链表中即可.
        阅读全文
                
摘要:双向链表 相比单链表,节点多了一个pre指向前一个节点的地址 添加节点 思路 遍历方和单链表 样,只是可以向前,也可以向后查找 添加(默认添加到双向链表的最后) 先找到双向链表的最后这个节点 temp.next =newHeroNode newHeroNode.pre =temp; 删除节点 删除 
        阅读全文
                
摘要:单链表 实例:使用带head头的单向链表实现 水浒英雄排行榜管理 插入链表节点的方法 思路: 注:头节点不能动,一旦动了,就无法在遍历了,遍历是从头节点开始的,所以需要一个辅助节点(可以当作指针指针)来进行遍历 首先找到新添加的节点的位置,是通过辅助变量(指针),通过遍历找到 新的节点.next =
        阅读全文
                
摘要:环形队列 思路介绍 思路如下: front 变量: front 就指向队列的第 个元素,也就是说arr[front]就是队列的第一个元素,front的初始值= 0 rear 变量: rear 指向队列的最后一个元素的后 一个位置因为希望空出一个空间做为约定.rear的初始值=0 当队列满时,条件是(
        阅读全文
                
摘要:稀疏数组 当一个数组中大部分元素为0,或者为同一 个值的数组时,可以使用稀疏数组来保 存该数组。 稀疏数组的处理方法是: 1)记录数组一共有几行几列,有多少个不同的值 2)把具有不同值的元素的行列及值记录在一个小规模 的数组中,从而缩小程序的规模 二维数组转稀疏数组的思路 1.遍历原始的二维数组,得
        阅读全文
                

 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号