Fork me on GitHub

随笔分类 -  算法/algorithm

算法相关的内容
摘要:Java中对集合或者数组排序一般有两个方法,类实现Comparable 接口或者 排序时使用定制化接口 Comparator。 以TreeSet为例,日常写法: Set<Integer> sets = new TreeSet<>(new Comparator<Integer>() { @Overri 阅读全文
posted @ 2020-11-24 10:48 龙城飞将军 阅读(158) 评论(0) 推荐(0) 编辑
摘要:先看一下常用数据类型的数值范围(32位系统) 字节 类型 范围 长度 | 字节 | 类型 | 范围 | 长度 | | | | | | | 一字节(28) | char | -128 ~ 127 | 3 | | 一字节(28) | unsigned char | 0 ~ 255 | 3 | | 二字节 阅读全文
posted @ 2020-11-03 21:45 龙城飞将军 阅读(483) 评论(0) 推荐(0) 编辑
摘要:1. 面试题 08.01. 三步问题 1.1. 问题分析 1.1.1. 深度遍历 1.1.1.1. 代码实现 1.1.2. 数学解法-找规律 1.1.2.1. 实现 1.2. 输出样例: 1. 面试题 08.01. 三步问题 三步问题。有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3 阅读全文
posted @ 2020-11-02 14:50 龙城飞将军 阅读(150) 评论(0) 推荐(0) 编辑
摘要:动态规划是一种算法技巧,基本思想是:如果一个问题的解,可以拆分成重复多个步骤的子问题,解决当前的问题后,到达一种状态,后一个子问题的求解是建立在现有状态的基础上,最后在每个子问题的最优解的基础上,得出整体的最优解。 《数据结构与算法-Java》这本书提到,动态规划是将递归算法改写为非递归算法,把非递 阅读全文
posted @ 2020-10-29 18:16 龙城飞将军 阅读(392) 评论(0) 推荐(0) 编辑
摘要:前序遍历是二叉树遍历方法的一种,和中序遍历、后续遍历是二叉树最常见的遍历方式。 适用场景 前序遍历适用于目录现实、组织结构图显示等。 遍历顺序 前序遍历首先访问根结点然后遍历左子树,最后遍历右子树。在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。 递归法 按照遍历顺序递归即可, 阅读全文
posted @ 2020-10-27 09:31 龙城飞将军 阅读(917) 评论(0) 推荐(0) 编辑
摘要:1. 深度优先遍历 使用场景:常见于各种组合,树遍历,前序遍历、中序遍历、后续遍历 private void dfs(int[] arr, int target,int begin, Deque<Integer> path, Set<List<Integer>> res) { if ( path.s 阅读全文
posted @ 2020-10-24 23:05 龙城飞将军 阅读(200) 评论(0) 推荐(0) 编辑
摘要:快慢指针即使用一快一慢两个指针,对链表进行遍历。利用两个指针的速度差,如2倍速-用于求中间指针或循环链表;恒定n个差值,用于寻找倒数第n个指针。 1. 环形链表 如果快指针到达NULL,说明链表以NULL结尾,不存在环。如果快指针追上慢指针,则表示有环。 public boolean hasCycl 阅读全文
posted @ 2020-10-23 22:38 龙城飞将军 阅读(1988) 评论(0) 推荐(1) 编辑
摘要:一直以来,大量做各类管理系统的程序员,大量的时间都在处理各类增删改查问题,对于其他的方面尤其是算法层面的涉及较少,这次就遇到一个问题。 业务场景 用户上传一份Excel,让用户选择其中的部分列头,程序对列头做两两组合,并对所有的组合取Excel表中的数据,绘制一个折线图。 问题分解 文件上传。前端使 阅读全文
posted @ 2020-10-20 23:03 龙城飞将军 阅读(229) 评论(0) 推荐(0) 编辑
摘要:翻译来源 "https://www.nayuki.io/page/next lexicographical permutation algorithm" 简介 假设对于一个有限长度的数组序列(0, 3, 3, 5, 8),需要生成对应的所有全排列。有什么好的办法做到? 最原始的方案是使用自顶向下的递 阅读全文
posted @ 2017-12-13 22:51 龙城飞将军 阅读(414) 评论(0) 推荐(0) 编辑
摘要:常用算法总结 程序是为了具体的问题而存在,每个具体问题可抽象为一定的数学问题即算法的表示。故有了下面的公式: 程序 = 数据结构 + 算法 + 程序设计语言 数据结构表示要处理的数据;算法表示核心的处理流程;程序设计语言完成和具体业务化的问题。 常用的基本算法有以下这些: 1. 枚举算法 枚举法,将 阅读全文
posted @ 2017-02-20 11:34 龙城飞将军 阅读(2731) 评论(0) 推荐(0) 编辑
摘要:java 排序Comparable和Comparator使用 java提供了两个排序用的接口Comparable和Comparator,一般情况下使用区别如下: 1. Comparable 接口用于类的固定排序方式上面,比如类实现Comparable接口,实现compareTo方法, 做为类默认排序 阅读全文
posted @ 2017-02-14 23:46 龙城飞将军 阅读(297) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示