
算法
快乐键盘侠
这个作者很懒,什么都没留下…
展开
-
单词拆分
题目给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = “leetcode”, wordDict = [“leet”, “code”]输出: true解释: 返回 true 因为 “leetcode” 可以被拆分成 “leet code”。示例 2:输入: s = “applepenapple”, wordDict =原创 2021-04-13 09:00:32 · 272 阅读 · 1 评论 -
【算法题解:java】顺时针打印矩阵
题目对于一个矩阵,请设计一个算法从左上角(mat[0][0])开始,顺时针打印矩阵元素。给定int矩阵mat,以及它的维数nxm,请返回一个数组,数组中的元素为矩阵元素的顺时针输出。测试样例:[[1,2],[3,4]],2,2返回:[1,2,4,3]分析注意只有一行或者一列时的特殊情形代码public class Printer { public int[] clockwisePrint(int[][] mat, int n, int m) { // write原创 2021-03-23 17:06:23 · 163 阅读 · 0 评论 -
【算法题解:java】左右最值最大差
题目给定一个长度为N(N>1)的整型数组A,可以将A划分成左右两个部分,左部分A[0…K],右部分A[K+1…N-1],K可以取值的范围是[0,N-2]。求这么多划分方案中,左部分中的最大值减去右部分最大值的绝对值,最大是多少?给定整数数组A和数组的大小n,请返回题目所求的答案。测试样例:[2,7,3,1,1],5返回:6分析仔细审题,可以发现数组中的最大数无论分在左边还是右边,都会是这一边的最大数,而为了使两边的差值最大,就必须使另一边的最大数尽可能的小,而每一边都至少会有一原创 2021-03-23 17:01:39 · 364 阅读 · 0 评论 -
【算法题解:java】求和
目录标题题目分析代码题目输入两个整数 n 和 m,从数列1,2,3…n 中随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来输入描述:每个测试输入包含2个整数,n和m输出描述:按每个组合的字典序排列输出,每行输出一种组合示例1输入5 5输出1 42 35分析假设问题的解为F(n, m),可分解为两个子问题 F(n-1, m-n)和F(n-1, m)。对这两个问题递归求解,求解过程中,如果找到了符合条件的数字组合,则打印出来 例如 1, 2, 3, 4,原创 2021-03-18 16:07:14 · 664 阅读 · 1 评论 -
【算法题解:java】电话号码
目录标题题目代码题目上图是一个电话的九宫格,如你所见一个数字对应一些字母,因此在国外企业喜欢把电话号码设计成与自己公司名字相对应。例如公司的Help Desk号码是4357,因为4对应H、3对应E、5对应L、7对应P,因此4357就是HELP。同理,TUT-GLOP就代表888-4567、310-GINO代表310-4466。NowCoder刚进入外企,并不习惯这样的命名方式,现在给你一串电话号码列表,请你帮他转换成数字形式的号码,并去除重复的部分输入描述:输入包含多组数据。每组数据第一行包原创 2021-03-18 15:52:28 · 678 阅读 · 0 评论 -
【算法题解:java】简单错误记录
目录标题题目分析代码题目开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。处理:1.记录最多8条错误记录,对相同的错误记录(即文件名称和行号完全匹配)只记录一条,错误计数增加;(文件所在的目录不同,文件名和行号相同也要合并)2.超过16个字符的文件名称,只记录文件的最后有效16个字符;(如果文件名不同,而只是文件名的后16个字符和行号相同,也不要合并)3.输入的文件可能带路径,记录文件名称不能带路径输入描述:一行或多行字符串。每行包括带路径文件名称,行号,以空格隔开。原创 2021-02-03 01:33:30 · 381 阅读 · 0 评论 -
【算法题解:java】说反话
目录标题题目分析代码题目给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。输入描述:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多余的空格。输出描述:每个测试用例的输出占一行,输出倒序后的句子。示例输入Hello World Here I Come输出Come I Here World Hello分析按空格分割后原创 2021-02-03 01:29:22 · 261 阅读 · 0 评论 -
【算法题解:java】二叉树平衡检查
目录标题题目分析代码题目平衡的定义如下,已知对于树中的任意一个结点,若其两颗子树的高度差不超过1,则我们称该树平衡。现给定指向树根结点的指针TreeNode* root,请编写函数返回一个bool,表示该二叉树是否平衡。分析平衡二叉树是通过左右子树的高度来判断是否为平衡二叉树的,所以我们首先想到的是如何求一个树的高度,求一个树的高度可以用递归求解,每次求出左右子树的最大高度再加1便是父节点的高度,这样递归下去,便可以求出任何一颗树的高度。可以求出任何一个节点的高度,那么通过再次遍历二叉树,判断任何原创 2021-01-30 20:32:11 · 216 阅读 · 0 评论 -
【算法题解:java】密码验证合格程序
目录标题题目代码题目密码要求:1.长度超过8位2.包括大小写字母.数字.其它符号,以上四种至少三种3.不能有相同长度大于2的子串重复输入描述:一组或多组长度超过2的子符串。每组占一行输出描述:如果符合要求输出:OK,否则输出NG示例1输入021Abc9000021Abc9Abc1021ABC9000021$bc9000输出OKNGNGOK代码import java.util.Scanner;public class Main { pub原创 2021-01-30 11:53:10 · 424 阅读 · 1 评论 -
【算法题解:java】统计回文
目录标题题目分析代码题目统计回文“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。花花非常喜欢这种拥有对称美的回文串,生日的时候她得到两个礼物分别是字符串A和字符串B。现在她非常好奇有没有办法将字符串B插入字符串A使产生的字符串是一个回文串。你接受花花的请求,帮助她寻找有多少种插入办法可以使新串是一个回文串。如果字符串B插入的位置不同就考虑为不一样的办法。例如:A = “aba”,B = “b”。这里有4种把B插入A的办法:在A的第一个字母之前: “b原创 2021-01-28 16:23:26 · 213 阅读 · 3 评论 -
【算法题解:java】寻找第K大的数
目录标题题目分析代码题目有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数。给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的数,保证答案存在。分析这题应该是用快排的思想:例如找49个元素里面第24大的元素,那么按如下步骤: 1.进行一次快排(将大的元素放在前半段,小的元素放在后半段),假设得到的中轴为p 2.判断 p - low + 1 == k ,如果成立,直接输出a[p],(因为前半段有k - 1个大于a[p]的元素,故a[p]为第K大的元素)原创 2021-01-28 17:10:58 · 1867 阅读 · 1 评论