算法
爽儿歪歪歪
一根有趣的葱~
展开
-
丑数~~~~
把只包含因子2、3和5的数称作丑数,例如6,8都是丑数,但14不是,因为它包含因子7,习惯上我们把1当作第一个丑数,求按从小到大的顺序的第N个丑数。 输入描述:整数N 输出描述:第N个丑数 第一种方法:遍历每一个整数i,若i能被2或者3或者5整除,count++,直到count = N时跳出循环,打印iimport java.util.Scanner;public class K...原创 2017-09-20 18:17:58 · 353 阅读 · 2 评论 -
魔法城市
时间限制:2s 空间限制128M 题目:小Q来到一个魔法王国,这个王国一共有n个城市,分别是0~n-1号魔法城市,任意两个魔法城市都有一个魔法通道连通(无向边),每条魔法通道都需要一定的时间才能通过,小Q现在在0号魔法城市,他希望通过穿梭魔法通道到大1号魔法城。 小Q为了更快到达魔法城市在魔法商店购买了一把魔力扫把,使用魔力扫把在一条魔法通道飞行的时候可以让该条魔法通道花费的时间减半,但是魔法...原创 2017-09-20 18:42:48 · 873 阅读 · 0 评论 -
匹配路径
题目:假如有一个HTTP Server,可以对不同的路径(Path)注册不同的处理函数(Handler)。路径的格式为/x/y/z,使用“/”作为分隔符,被分隔开的每个组件都是只包含字母的非空字符串;路径总是以“/”开头,且不以“/”结尾,也不会出现“/x//y”这样的情况。为了简化问题,我们将处理函数用整数的ID号表示。 对于客户端的HTTP请求,我们需要根据路径匹配最合适的处理函数...原创 2017-09-20 19:43:33 · 496 阅读 · 0 评论 -
括号匹配方案
合法的括号匹配序列被定义为: 1、空串“”是合法的括号序列 2、如果“x”和“y”是合法的序列,那么“xy”也是合法的序列 3、如果“x”是合法的序列,那么“(x)”也是合法的序列 4、每个合法的括号序列都可以由上面的规则生成 东东现在有一个合法的括号序列s,一次移除操作分为两步: 1、移除序列s中第一个左括号 2、移除序列s中任意一个右括号。保证操作之后s还是一个合法的括号序列 ...原创 2017-09-20 14:15:30 · 730 阅读 · 0 评论 -
并查集
题目 某学校近期要组织全校同学出去参加某项活动,由于人数众多,学校决定让同学们自行组队,以小组为单位进行活动。假设学校一共n个同学,每个同学有一个唯一的数字作为标签,标签数字范围1到n。为了统计分组情况,学校要求有分组意愿的同学提交一个数字,表示其会和以该数字为标签的同学分到一组。 现在告诉你每位同学的选择,你能统计出一共有多少个小组么? 注意如果1和2一组,2和3一组,那...原创 2017-09-21 13:02:57 · 224 阅读 · 0 评论 -
01背包
题目:有一个背包,体积为m,现在给你n个石头,每个石头都有价值和体积,问这个背包可以装下多大价值的石头。 输入: 第一行两个整数n,m,分别代表石头的个数和背包的体积 接下来n行,每行有两个整数,整数之间以空格隔开,分别表示石头的价值和体积 输出: 输出包括一个整数,表示背包可以装下最大的价值第一种方法:用二维数组d[i][j]保存当背包容量为j时...原创 2017-09-21 15:12:30 · 220 阅读 · 0 评论 -
完全背包
完全背包和01背包的区别 01背包:有n个物品,每种物品只能被使用一次 完全背包:有n个物品,每个物品可以被多次使用完全背包的递推公式可以由01背包的递推公式扩展得到(如果背包可以装下k个weight[i]) 二维: dp[i][j] = Math.max(dp[i-1][j], dp[i-1][j-k*weight[i]] + k*value[i]) 一维 dp[...原创 2017-09-21 16:51:15 · 450 阅读 · 0 评论 -
动态规划凑硬币
题目:几年教师节活动中,公司里为培训讲师提供了不同面值的饮料兑换券(每种面值数量不限),培训讲师可以领取兑换券去食堂兑换鲜榨果汁,要求兑换券和果汁必须等价,姜小虎想要兑换一杯果汁,计算它最少要领取几张兑换券,如果无法兑换返回-1. 输入描述:第一行:兑换券的面值种类(种类>0) 第二行:数组,代表兑换券面值(面值>0) 第三行:一个整数,代表饮料的价值(饮料的价值>...原创 2017-09-27 10:32:13 · 1018 阅读 · 0 评论 -
二叉树的前序遍历(递归和非递归)
上一篇是后续遍历,这一篇记录一下前序遍历,递归代码如下:ArrayList<Integer> list = new ArrayList<>(); public ArrayList<Integer> preorderTraversal(TreeNode root) { if(root == null) return list; pre(r原创 2017-10-26 10:59:17 · 248 阅读 · 0 评论 -
二叉树的后序遍历(递归和非递归)
对于二叉树的后序遍历,最常用的就是递归,代码清晰,如下:ArrayList<Integer> list = new ArrayList<>(); public ArrayList<Integer> postorderTraversal(TreeNode root) { if(root == null) return list; sort(原创 2017-10-26 10:24:13 · 374 阅读 · 0 评论 -
链表排序--归并排序
要求在空间复杂度为O(1)的情况下对链表进行排序,在不考虑时间复杂度的情况下可以考虑冒泡排序,只对链表中的值进行操作,这样时间复杂度为O(n^2)。用归并排序,时间复杂度为O(nlogn)。以下为归并排序代码实现private static ListNode sort(ListNode head){ if(head == null) return null;原创 2017-10-13 21:27:51 · 258 阅读 · 0 评论 -
xor
给出n个数字a_1,…a_n,问最多有多少个不重叠的非空区间,使得每个区间内数字的xor都等于0,即得出最大的k,使得存在k个区间(l[i],r[i]),满足1<=l[i]<=r[i]<=n,(1<=i<=k),r[i] < r[i+1],(1<=i<=k),且a[l[i]] xor a[l[i]+1] xor … xor a[r[i]] = 0,(...原创 2017-09-20 15:38:41 · 597 阅读 · 0 评论