
算法基础
Zstar~
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【剑指offer】字符组合问题
输入:a,b,c三个字符,求它们的所有组合输出: a,b,c,ab,ac,bc,abc Set<ArrayList<Character>> set; //字符的组合问题 public Set<ArrayList<Character>> characterConpose(char[] chars){ se...原创 2019-11-27 10:34:49 · 157 阅读 · 0 评论 -
[动态规划] 钱币找零
最近开始撸算法,emm…,些许艰难,幸而有信念来支撑,哈,加油。钱币找零问题:有数组penny,penny中所有的值都为正数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个整数aim(小于等于1000)代表要找的钱数,求换钱有多少种方法。给定数组penny及它的大小(小于等于50),同时给定一个整数aim,请返回有多少种方法可以凑成aim。测试样例: [1,...原创 2019-05-21 22:26:08 · 285 阅读 · 0 评论 -
【排序算法】java实现九个基础排序
【冒泡排序】import java.util.*;//冒泡排序public class BubbleSort { public int[] bubbleSort(int[] A, int n) { for(int i=0;i<n;++i) { for(int j=1;j<n-i;++j) { if(A[j]<...原创 2019-05-22 15:36:01 · 165 阅读 · 0 评论 -
堆排序的应用——小范围内排序
已知一个几乎有序的数组,几乎有序是指,如果把数组排好顺序的话,每个元素移动的距离可以不超过k,并且k相对于数组来说比较小。请选择一个合适的排序算法针对这个数据进行排序。给定一个int数组A,同时给定A的大小n和题意中的k,请返回排序后的数组。测试样例: [2,1,4,3,6,5,8,7,10,9],10,2返回:[1,2,3,4,5,6,7,8,9,10]思路:1.本题给定的数组几乎...原创 2019-05-23 23:02:03 · 376 阅读 · 0 评论 -
HDU_【1495】非常可乐
端午回家嗨之前,刷道题提前嗨~Problem Description大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为。因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多。但seeyou的手中只有两个杯子,它们的容量分别是N 毫升和M 毫升 可乐的体积为S (S<101)毫升 (正好装满一瓶) ,它...原创 2019-06-06 16:22:57 · 204 阅读 · 0 评论 -
【LeetCode 】3.无重复最长子串(双端队列)
3.无重复最长子串给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。思路:看完题目就觉得用双端队列来实现挺好。求最长无重复子串,如果按照“求所有子串–>从所有子串中选出最长无重复子串”这个思路,显然需要搜索的解空间太大。但如果采用双端队列,每次只针对当前处理的无重复子串长度来更新无重复子串的最大值,这样就快很多。双端队列的优势在于,可以从前后两个方向操作元素。因此在本...原创 2019-07-04 14:08:28 · 156 阅读 · 0 评论 -
【LeetCode】5.求最长回文子串
题目描述: 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。1.O(n^2)解法:①定义一个二维辅助数组p,其中p[i][j]的含义:p[i][j] = s.substring(i,j+i) 是否是回文子串?1:0;②初始情况:当i=j时,p[i][j] = 1; 当i=j-1时,p[i][j] = s[i]==s[j]?1:0;③那么,现在的...原创 2019-07-17 16:15:09 · 145 阅读 · 0 评论 -
trie树之敏感词过滤算法
之前写过一篇关于Trie树的介绍:Trie树——在一个字符串集合中快速查找某个字符串。今天就用Trie树来实现敏感词过滤算法。首先简单介绍一下Trie树的数据结构:1.根节点不存储字符。2.Trie树中除了根节点外其余节点都需要存储一个字符,另外还需要一个标记来确定当前节点是否为敏感词中的最后一个字符。3.每个节点的所有子节点包含的字符都不相同。了解了Trie树的基本结构,就可以开始思考...原创 2019-07-22 17:42:22 · 1196 阅读 · 0 评论 -
查找数组中最小k个数
思路:可采用大顶堆来实现——维护一个规模为k的大顶堆。从前往后扫描数组元素:若大顶堆的size小于k,则把当前元素插入大顶堆中;若小于k, 若当前元素小于堆顶元素,则删除堆顶元素,插入当前元素。考虑到从头实现一个大顶堆比较麻烦,这里使用TreeSet容器,它提供有序的set。TreeSet底层实际使用的是TreeMap,而TreeMap是用红黑树实现的,在红黑树中查找插入和删除都只要O(l...原创 2019-08-01 14:33:47 · 242 阅读 · 0 评论 -
【剑指offer】把数组排成最小的数
题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。两种解法,一种全排列,一种定义新的比较大小的方法对数组进行排序。法一:全排列假设数组长度为n,对数组进行全排列,一共n!中结果,从所有结果中取最小的一种排列方式。代码如下:import java.u...原创 2019-08-19 14:59:19 · 111 阅读 · 0 评论 -
【leetcode 300】最长上升子序列 O(nlogn)解法
题目:最长上升子序列思路:维护一个minend数组,minend[i]保存长度为i的上升子序列中,最小的尾部元素的数值。minend数组中最后一个元素即为最长上升子序列的尾部元素,该尾部元素在minend数组中的位置坐标即为最长子序列的长度。理解了维护minend数组的过程,就很容易写出代码:看上面的例子,走一遍过程思路应该就能理清楚了——首先初始化数组minend: minend[1...原创 2019-08-30 15:48:42 · 371 阅读 · 0 评论 -
取模优化问题
C语言除法算法和取模运算的实现(多种算法,多种思路)ACM算法:快速幂取模(详细)转载 2019-05-25 14:41:24 · 1207 阅读 · 0 评论 -
[动态规划]1048.最长字符串链
给出一个单词列表,其中每个单词都由小写英文字母组成。如果我们可以在 word1 的任何地方添加一个字母使其变成 word2,那么我们认为 word1 是 word2 的前身。例如,“abc” 是 “abac” 的前身。词链是单词 [word_1, word_2, …, word_k] 组成的序列,k >= 1,其中 word_1 是 word_2的前身,word_2 是 word_3 的前...原创 2019-05-20 14:54:09 · 533 阅读 · 0 评论 -
【5050】困于环中的机器人
困于环中的我 (T-T)在无限的平面上,机器人最初位于 (0, 0) 处,面朝北方。机器人可以接受下列三条指令。 “G”:直走 1 个单位; “L”:左转 90 度 ; “R”:右转 90 度 。机器人按顺序执行指令 instructions,并一直重复它们。只有在平面中存在环使得机器人永远无法离开时,返回 true。否则,返回 false。示例 1:输入:“GGLLGG”输出:...原创 2019-05-14 18:30:19 · 341 阅读 · 0 评论 -
【力扣】缺失的第一个正数
给定一个未排序的整数数组,找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2示例 3:输入: [7,8,9,11,12]输出: 1说明:你的算法的时间复杂度应为O(n),并且只能使用常数级别的空间。思路:定义一个长度为nums.length+1的数组:int[] cnt遍历一遍原数组nums,...原创 2019-04-09 20:06:43 · 227 阅读 · 0 评论 -
【32】最长有效括号
给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。示例 1:输入: “(()”输出: 2解释: 最长有效括号子串为 “()”示例 2:输入: “)()())”输出: 4解释: 最长有效括号子串为 “()()”思路:从左往右遍历定义三个计数器cnt : 统计当前未被抵消的’('的个数max:统计遍历到当前位置为止,出现的最长有效括号对的...原创 2019-04-16 11:41:31 · 224 阅读 · 0 评论 -
【150】逆波兰式求值——踩坑记录(String的== 与 equals)
根据逆波兰表示法,求表达式的值。有效的运算符包括 +, -, , / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。 给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1:输入: [“2”, “1”, “+”, “3”, ""]输出: 9解释: ((2 + 1) * 3) = 9示例 2:输入: ...原创 2019-04-16 15:21:32 · 184 阅读 · 0 评论 -
【641】设计循环双端队列(deque)
队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限的线性表。进行插入操作的端成为队尾,进行删除操作的端称为队头。双端队列:两端都可以进队和出队的队列从后端进前端出 或者 从前端进后端出 体现了 先进先出 的特点;从后端进后端出 或者 从前端进前端出 体现了 先进后出 的特点。图示:分别从前端后后...原创 2019-04-17 12:20:05 · 573 阅读 · 1 评论 -
【70】爬楼梯:递归思想
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?题目不难,这里我主要想写一下递归思想递归篇要想用递归,必须满足三个条件:一个问题的解可以分为几个子问题的解;这个问题和分解后的子问题,除了数据规模不同,求解思路完全一样;存在递归终止条件。再来看看上面的爬楼梯问题:想求n阶楼梯的不同爬法。假设你已经知道了1至(n...原创 2019-04-17 17:33:31 · 3504 阅读 · 0 评论 -
【69】x的平方根的三种解法 [二分法|牛顿迭代法]
实现 int sqrt(int x) 函数,计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842…, 由于返回类型是整数,小数部分将被舍去。三种解决方案:用Java的内置函数math.sqrt求解,强制转化结果并返回。代...原创 2019-04-19 20:17:45 · 606 阅读 · 0 评论 -
【力扣134场周赛 】5040 边框着色
给出一个二维整数网格 grid,网格中的每个值表示该位置处的网格块的颜色。 只有当两个网格块的颜色相同,而且在四个方向中任意一个方向上相邻时,它们属于同一连通分量。 连通分量的边界是指连通分量中的所有与不在分量中的正方形相邻(四个方向上)的所有正方形,或者在网格的边界上(第一行/列或最后一行/列)的所有正方形。给出位于 (r0, c0) 的网格块和颜色 color,使用指定颜色 color 为所...原创 2019-04-29 10:41:20 · 261 阅读 · 0 评论 -
【1039】多边形三角剖分的最低得分
给定 N,想象一个凸 N 边多边形,其顶点按顺时针顺序依次标记为 A[0], A[i], …, A[N-1]。假设您将多边形剖分为N-2 个三角形。对于每个三角形,该三角形的值是顶点标记的乘积,三角剖分的分数是进行三角剖分后所有 N-2个三角形的值之和。返回多边形进行三角剖分后可以得到的最低分。示例 1:输入:[1,2,3]输出:6解释:多边形已经三角化,唯一三角形的分数为 6。示例 ...原创 2019-05-08 14:06:26 · 955 阅读 · 0 评论 -
Trie树——在一个字符串集合中快速查找某个字符串
Trie树又叫“字典树”,是一种专门处理字符串匹配的数据结构,用来解决在一个字符串集合中快速查找某个字符串的问题。本质:利用字符串之间的公共前缀,将重复的前缀合并在一起。用6个字符串hello,how,hi,her,so,see来组织成Trie树的结构:其中,根节点不包含任何信息。每个节点表示一个字符串中的字符,从根节点到红色节点表示一个字符串。Trie树的两个操作:1.将字符串集合...原创 2019-04-25 18:35:50 · 1946 阅读 · 0 评论 -
【1029】两地调度
公司计划面试 2N 人。第 i 人飞往 A 市的费用为 costs[i][0],飞往 B 市的费用为 costs[i][1]。 返回将每个人都飞到某座城市的最低费用,要求每个城市都有 N 人抵达。示例:输入:[[10,20],[30,200],[400,50],[30,20]]输出:110解释: 第一个人去 A 市,费用为 10。 第二个人去 A 市,费用为 30。 第三个人去 B 市,...原创 2019-05-09 18:48:16 · 484 阅读 · 0 评论 -
单链表逆序
单链表反转链表结构如下:链表节点数据结构:public class Node { public int value; public Node next; public Node(int data){ this.value = data; }}单链表反转代码:public Node reverseList(Node head){ ...原创 2019-04-09 11:25:22 · 111 阅读 · 0 评论