
算法
向上Claire
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode:20有效括号(栈Stack)
有效括号给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false示例 ...原创 2020-04-19 10:22:46 · 232 阅读 · 0 评论 -
LeeCode:摆动序列376
摆动序列如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可能是正数或负数。少于两个元素的序列也是摆动序列。例如, [1,7,4,9,2,5] 是一个摆动序列,因为差值 (6,-3,5,-7,3) 是正负交替出现的。相反, [1,4,7,2,5] 和 [1,7,4,5,5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的...原创 2020-04-18 16:28:15 · 342 阅读 · 0 评论 -
dp:LeetCode:343:整数拆分:用算术集合均值不等式、暴力搜索、备忘录数组、动态递归
整数拆分给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。示例 2:输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。说明: 你可以假设 n 不小于 2 且不大于 58。来源:力扣(LeetC...原创 2020-04-17 10:29:22 · 331 阅读 · 0 评论 -
dp:最长上升子序列:TreeSet.ceiling;暴力dp:二分法:用ArrayList写的二分法;arraylist中set和and的区别
给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。TreeSet.ceilingpackage TreeSet;import java.util.Arrays;import java.util.Scanner;import java.util...原创 2020-04-17 09:11:48 · 456 阅读 · 0 评论 -
dp:完全平方数
给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。示例 1:输入: n = 12输出: 3解释: 12 = 4 + 4 + 4.示例 2:输入: n = 13输出: 2解释: 13 = 4 + 9.package dp;import java.util.Scanner;public cla...原创 2020-04-15 21:12:09 · 340 阅读 · 0 评论 -
dp:比特位计数&&如何输出数组
给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。示例 1:输入: 2输出: [0,1,1]示例 2:输入: 5输出: [0,1,1,2,1,2]进阶:https://blog.csdn.net/chenkaibsw/article/details/78989459package dp;impo...原创 2020-04-15 20:47:15 · 231 阅读 · 0 评论 -
正整数的摆动序列:dp
正整数的摆动序列问题描述如果一个序列的奇数项都比前一项大,偶数项都比前一项小,则称为一个摆动序列。即 a[2i]<a[2i-1], a[2i+1]>a[2i]。 小明想知道,长度为 m,每个数都是 1 到 n 之间的正整数的摆动序列一共有多少个。输入格式输入一行包含两个整数 m,n。输出格式输出一个整数,表示答案。答案可能很大,请输出答案除以10000的余数。...原创 2020-04-18 16:51:23 · 1965 阅读 · 1 评论 -
第十一届 蓝桥杯 省模拟赛 螺旋矩阵
螺旋矩阵题目问题描述对于一个 n 行 m 列的表格,我们可以使用螺旋的方式给表格依次填上正整数,我们称填好的表格为一个螺旋矩阵。 例如,一个 4 行 5 列的螺旋矩阵如下: 1 2 3 4 5 14 15 16 17 6 13 20 19 18 7 12 11 10 9 8输入格式输入的第一行包含两个整数 n, m,分别表示螺旋矩阵的行数和列数。 第二行包含两个...原创 2020-04-15 19:21:26 · 2514 阅读 · 0 评论 -
班级排名,成绩排名
班级排名题目问题描述 达达在陶陶的影响下,也对学习慢慢的产生了兴趣。 他在每次考试之后,都会追着老师问,自己在班级的总名次是多少。考试一多,老师也不耐烦了,于是他给了达达所有人的成绩,让他自己去算出自己的排名。 可人太多了,达达也无法立即算出来,于是他想让你帮帮他。输入格式 第一行为一个整数N,代表班级的学生总数。 接下来N行,每行一个字符串,代表一个学生的姓...原创 2020-04-12 19:58:41 · 5174 阅读 · 0 评论 -
三个整数的排序、成绩排序、成绩排序2
三个整数的排序题目问题描述 输入三个数,比较其大小,并从大到小输出。输入格式 一行三个整数。输出格式 一行三个整数,从大到小排序。样例输入33 88 77样例输出88 77 33package 排序;import java.util.Arrays;import java.util.Collections;import java.util....原创 2020-04-12 19:24:45 · 440 阅读 · 0 评论 -
进制转;进制转换换,十进制数转八进制数,输出二进制表示(负数的二进制)
进制转换问题描述 编写函数将十进制整数按8进制输出,然后编写main函数验证该函数。例如输入12,则输出为:12=014,输入32,则输出32=040。输入格式 输入一个整数。输出格式 输出这个整数的八进制形式。样例输入12样例输出014数据规模和约定 输入的整数n>=0.代码package 进制;import java.uti...原创 2020-04-11 14:20:08 · 429 阅读 · 0 评论 -
求最小公倍数
求最小公倍数题目问题描述 从键盘输入M、N(M、N取值长整范围)两个数,求它们的最小公倍数。输入格式 输入文件只有一行,有两数被空格隔开,分别表示M、N的值。输出格式 只有一个数,即M、N的最小公倍数。样例输入15 20样例输出60也类似就是最大公约数代码package 数学;import java.util.Scanner;publi...原创 2020-04-11 13:08:51 · 238 阅读 · 0 评论 -
后缀数组:P3809 【模板】后缀排序、后缀子串排序 JAVA
P3809 【模板】后缀排序题目背景这是一道模板题。题目描述读入一个长度为 nn 的由大小写英文字母或数字组成的字符串,请把这个字符串的所有非空后缀按字典序从小到大排序,然后按顺序输出后缀的第一个字符在原串中的位置。位置编号为 11 到 nn。输入格式一行一个长度为 nn 的仅包含大小写英文字母或数字的字符串。输出格式一行,共 nn 个整数,表示答案。后缀数组的快速排序...原创 2020-04-05 07:19:42 · 396 阅读 · 0 评论 -
奇偶数:偶数还是奇数
偶数还是奇数问题描述 判断一个数是奇数还是偶数输入格式 输入1个整数n。输出格式 如果是偶数,输出“even”。 如果是奇数输出“odd”样例输入34样例输出even数据规模和约定 n<=100000000import java.util.Scanner;public class Main{ public static...原创 2020-04-05 05:23:40 · 282 阅读 · 0 评论 -
逆序输出:使用指针逆序输出
使用指针逆序输出问题描述 编写程序,输入一个字符串,使用指针逐个逆序输出字符串中所有字符。输入格式 输入一个字符串输出格式 输出一个与输入相应的逆序字符串样例输入一个满足题目要求的输入范例。 abcd样例输出与上面的样例输入对应的输出。 例: dcba数据规模和约定 输入数据中每一个数的范围。 例:输入的字符串长度小于100p...原创 2020-04-04 23:33:20 · 2479 阅读 · 0 评论 -
字符串:字符串顺序比较、11-2删除重复元素、字符串生成器、着急的WYF(不同子串个数)
字符串顺序比较问题描述 比较两个字符串s1和s2,输出:0表示s1与s2相等;1表示s1的字母序先于s2;-1表示s1的字母序后于s2输入格式 输入两行,第一行输入一个字符串1,第二行输入字符串2。输出格式 输出比较的结果样例输入abc abd样例输出1样例输入English English样例输出0样例输入hello ha...原创 2020-04-04 23:25:25 · 643 阅读 · 0 评论 -
排序:冒泡排序计数、插入排序、选择排序、拓扑排序:士兵排队问题、快速排序、逆序排列、三个整数的排序
冒泡排序计数 考虑冒泡排序的一种实现。 bubble-sort (A[], n) > round = 0 > while A is not sorted > > round := round + 1 > > for i := 1 to n - 1 > > > if (A[i] > A[i + 1])...原创 2020-04-04 13:51:34 · 937 阅读 · 1 评论 -
子序列,子集
子集选取问题描述 一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得它们的交集的元素个数为K,求取法的方案数,答案模1000000007。输入格式 输入一行两个整数N,K。输出格式 输出一个整数表示答案。样例输入3 2样例输出6数据规模和约定 1 <= K <= N <=...原创 2020-04-04 13:47:00 · 963 阅读 · 0 评论 -
字符串:字符串匹配、字符串压缩、删除子字符串、 周期字串(最小周期数)、字符串跳步、3-2字符串输入输出函数、不同单词个数统计、递归倒置字符数组、单词个数统计、字符串比较、6-9删除数组中的0元素
字符串匹配问题描述 给出一个字符串和多行文字,在这些文字中找到字符串出现的那些行。你的程序还需支持大小写敏感选项:当选项打开时,表示同一个字母的大写和小写看作不同的字符;当选项关闭时,表示同一个字母的大写和小写看作相同的字符。输入格式 输入的第一行包含一个字符串S,由大小写英文字母组成。 第二行包含一个数字,表示大小写敏感的选项,当数字为0时表示大小写不敏感,当数字为1时表...原创 2020-04-04 13:44:51 · 847 阅读 · 0 评论 -
最长字符序列
问题描述 设x(i), y(i), z(i)表示单个字符,则X={x(1)x(2)……x(m)},Y={y(1)y(2)……y(n)},Z={z(1)z(2)……z(k)},我们称其为字符序列,其中m,n和k分别是字符序列X,Y,Z的长度,括号()中的数字被称作字符序列的下标。 如果存在一个严格递增而且长度大于0的下标序列{i1,i2……ik},使得对所有的j=1,2,……k,有x(i...原创 2020-04-04 13:28:43 · 457 阅读 · 0 评论 -
差分数组:数列游戏、Color the ball、分苹果
一、差分数组的定义及用途1.定义:对于已知有n个元素的离线数列d,我们可以建立记录它每项与前一项差值的差分数组f:显然,f[1]=d[1]-0=d[1];对于整数i∈[2,n],我们让f[i]=d[i]-d[i-1]。2.简单性质:(1)计算数列各项的值:观察d[2]=f[1]+f[2]=d[1]+d[2]-d[1]=d[2]可知,数列第i项的值是可以用差分数组的前i项的和计算的,即d[i...原创 2020-04-04 11:15:28 · 376 阅读 · 0 评论 -
尺取法:Subsequence
Subsequence原创 2020-04-03 20:09:52 · 135 阅读 · 0 评论 -
integer.parseint作用
Integer.parseInt()是把()里的内容转换成整数。Integer.parseInt(String)遇到一些不能被转换为整型的字符时,会抛出异常。Integer.parseInt(String)的作用就是将String字符类型数据转换为Integer整型数据。...原创 2020-04-03 14:58:10 · 4058 阅读 · 0 评论 -
dfs:2n皇后、8皇后·改(不同行不同列最大值)
2n皇后题目问题描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后。现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行、同一列或同一条对角线上,任意的两个白皇后都不在同一行、同一列或同一条对角线上。问总共有多少种放法?n小于等于8。输入格式 输入的第一行为一个整数n,表示棋盘的大小。 接下来n行,每行n个0或1的整数,如果一个整数为1,表示对应的...原创 2020-04-01 23:03:53 · 337 阅读 · 0 评论 -
二分搜索:从有序数组中查找某个值、假设一个解并判断是否可行、最大化平均值
从有序数组中查找某个值Lower_bound原创 2020-04-01 22:13:49 · 220 阅读 · 0 评论 -
bfs:种树、迷宫问题、学霸的迷宫
bfs种树(有多个出发点)问题描述 小明有一块空地,他将这块空地划分为 n 行 m 列的小块,每行和每列的长度都为 1。 小明选了其中的一些小块空地,种上了草,其他小块仍然保持是空地。 这些草长得很快,每个月,草都会向外长出一些,如果一个小块种了草,则它将向自己的上、下、左、右四小块空地扩展,这四小块空地都将变为有草的小块。 请告诉小明,k 个月后空地上哪些地方有草。输入格式...原创 2020-04-01 16:07:26 · 215 阅读 · 0 评论 -
Crazy Rows(字符串二维数组的输入,移动交换)
最先想到的是尝试所有N!种交换方式,但是时间复杂度不行package 数字技巧实战;import java.util.Scanner;public class CrazyRows { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc=new ...原创 2020-04-01 12:56:31 · 339 阅读 · 0 评论 -
逆序,倒序
Collections.reverseOrder()–逆序package 数字技巧实战;import java.util.Arrays;import java.util.Collections;import java.util.Comparator;import java.util.Scanner;public class Minimum_Scalar_Product { pu...原创 2020-04-01 00:33:07 · 673 阅读 · 0 评论 -
Minimum Scalar Product(找出相乘相加最小值)
v1和v2各自的分量的顺序都可以任意交换,因此可以先把v1的顺序固定下来只交换v2的顺序。为了方便分析,先讲v1按升序的顺序排好。接下来枚举v2的分量所有的顺序排列,一共有n!中排列,还需要对每种排序计算内积,总的复杂度位O(n!*m)。n≤8时没有问题,但大了就有问题...原创 2020-04-01 00:05:10 · 293 阅读 · 0 评论 -
模运算:快速幂运算
模运算为什么需要求余数基本的模运算计算除以m的余数对m取模以m为模快速幂运算反复平方法Carmichael Numbers原创 2020-03-31 23:12:16 · 784 阅读 · 1 评论 -
辗转相除法:求最大公约数、欧几里得算法、extgcd、算法提高 求最大公约数、GCD and LCM(合数分解)
辗转相除法求最大公约数int gcd(int a,int b){if(b==0)return a;return gcd(b,a%b);}复杂度欧几里得算法import java.util.Scanner;public class 欧几里得算法 { public static void main(String[] args) { // TODO Auto-...原创 2020-03-31 22:44:26 · 352 阅读 · 0 评论 -
素数:素数判断、找素数、计算素数和、素数求和
素数求和题目问题描述 输入一个自然数n,求小于等于n的素数之和样例输入2样例输出2数据规模和约定 测试样例保证 2 <= n <= 2,000,000计算素数和题目问题描述 完成一个程序,该程序计算n以内(包含n)的所有素数之和并返回。注意,提交完整的程序代码。输入格式 输入一个整数 n;输出格式 输出n以前所有素...原创 2020-03-31 14:14:25 · 707 阅读 · 0 评论 -
数组a[i++]等于a[i]
数组a[i++]等于a[i]a[i++]等于a[i]例如:a[i]=10;i=1;则:int y = a[i];//y=10;int x = a[i++]; // x=10;// 此时i=2当然n=0 a[n++]=c-‘0’ 意思是a[0]=‘c’此时n=1n可以表示当前数组里面个数...原创 2020-03-31 15:30:44 · 599 阅读 · 0 评论 -
需要运用优先队列的题目(Expedition)
需要运用优先队列的题目原创 2020-03-29 18:13:37 · 168 阅读 · 0 评论 -
欧几里得算法gcd(计算最大公因数)
欧几里得算法(计算最大公因数)两个整数的最大公因数(gcd)是同时整除二者的最大整数import java.util.Scanner;public class 欧几里得算法 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc=new Scanner(Sy...原创 2020-03-29 16:27:10 · 306 阅读 · 0 评论 -
最大子序列和问题、蓝桥:和最大子序列
import java.util.Scanner;public class 最大子序列和问题 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc=new Scanner(System.in); int n=sc.nextInt(); int[] a=...原创 2020-03-29 16:16:20 · 143 阅读 · 0 评论 -
栈,队列与优先队列:集合栈计算机 、丑数
栈:后进先出队列:先进先出集合栈计算机丑数原创 2020-03-26 11:32:04 · 142 阅读 · 0 评论 -
映射(Map):反片语:Ananagrams
Map就是从key到value的映射。因为重载了[]运算符,Map就像是数组的高级版反片语import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.HashMap;import java.util.Map;import java.util.Sc...原创 2020-03-26 10:52:49 · 193 阅读 · 0 评论 -
矩阵乘方(就是差一点点,真的不知道哪里错了)
题目问题描述 给定一个矩阵A,一个非负整数b和一个正整数m,求A的b次方除m的余数。 其中一个nxn的矩阵除m的余数得到的仍是一个nxn的矩阵,这个矩阵的每一个元素是原矩阵对应位置上的数除m的余数。 要计算这个问题,可以将A连乘b次,每次都对m求余,但这种方法特别慢,当b较大时无法使用。下面给出一种较快的算法(用A^b表示A的b次方): 若b=0,则A^b%m=I%m。其中I表示...原创 2020-03-24 22:56:53 · 311 阅读 · 0 评论 -
数的划分:这个是化为k份,要注意和不超过k分区分
数的划分题目问题描述 将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。 例如:n=7,k=3,下面三种分法被认为是相同的。 1,1,5; 1,5,1; 5,1,1; 问有多少种不同的分法。输入格式 n,k输出格式 一个整数,即不同的分法样例输入7 3样例输出4 {四种分法为:1,1,5;1,2,4;1,3,3;2,2,3;}数据规模和约定...原创 2020-03-24 21:32:59 · 467 阅读 · 0 评论