AcWing
lankerens
日常抄代码并给大佬点赞
展开
-
703. 数独检查 ( 递推 + 数组 )
AcWing:703. 数独检查题型: 36. 有效的数独 ( 递推 + 数组 )与上面那题稍微不同, 就是这个每块中的数字不一定是 1−n21 - n^21−n2 内的数, 所以需要额外加个判断就是不是在这个里面的,也算为 falseAC Codeimport java.util.*;import static java.lang.System.out;public class Main{ public static void main(String[] args原创 2021-02-04 12:17:42 · 409 阅读 · 0 评论 -
426. 开心的金明 ( 01背包 )
AcWing:426. 开心的金明每个物品一件, 01背包变形01 背包模板AC Code// 每个物品一件, 01背包变形import java.util.*;import static java.lang.System.out;public class Main{ public static void main(String[] args) { Scanner in = new Scanner(System.in); int k =原创 2021-02-03 21:25:30 · 123 阅读 · 0 评论 -
126. 最大的和 ( 贪心 + 前缀和 + 暴力枚举 )
AcWing:126. 最大的和贪心 + 前缀和 + 暴力枚举要找到子矩阵的最大和先计算每行的前缀和然后遍历构造子矩阵的开始列、结束列然后遍历每行,加入局部子矩阵,逐渐构成一个大的子矩阵. (贪心)时间复杂度:O(n3)O(n^3)O(n3)AC Codeimport java.util.*;import static java.lang.System.out;public class Main{ public static void main(String原创 2021-01-30 12:53:22 · 224 阅读 · 1 评论 -
1015. 摘花生 ( dp )
AcWing:1015. 摘花生类似机器人走路线性dp空间复杂度稍高AC Codeimport java.util.*;import static java.lang.System.out;public class Main{ public static void main(String[] args) { Scanner in = new Scanner(System.in); int t = in.nextInt();原创 2021-01-29 13:17:19 · 148 阅读 · 0 评论 -
420. 火星人 ( 贪心 + 全排列 求比它大的最小的排列 )
AcWing:420. 火星人( 这道题目可以直接用next_permutation函数来做。对于给定的某个排列,我们想求出比它大的最小的排列。题型: 31. 下一个排列 (倒序遍历)两边倒序遍历思路:第一次倒序遍历找到第一个降序的数 a第二次倒序遍历找到第一个大于 a 的数 b交换这两个数的位置将交换后部分进行从小到大排序AC Codeimport java.util.*;import static java.lang.System.out;public cla原创 2021-01-27 22:09:17 · 205 阅读 · 0 评论 -
482. 合唱队形 ( dp )
AcWing:482. 合唱队形题型: LeetCode 第40场双周赛D 5559. 得到山形数组的最少删除次数 最长上升子序列扩展思路:正着求一次最长上升子序列, 反着求一次然后将 f 数组 and g 数组的最长上升子序列长度相加,得到最长的山形数组的长度 ans总长度 - ans = 需要踢出队列的人数AC Codeimport java.util.*;import static java.lang.System.out;public class Main{原创 2021-01-27 21:07:28 · 194 阅读 · 0 评论 -
1603. 整数集合划分 ( 简单贪心 )
AcWing:1603. 整数集合划分简单贪心题目要求: 使得两个集合的个数尽量的小,然后在那个基础上使得两个集合的差最大集合个数尽量的小 >> 不是 0 就是 1 ( 偶数 or 奇数差最大 >> 一个将所有最小的 n / 2 个数包揽, 另一个将剩余的最大的数包揽, 相减即可AC Codeimport java.util.*;import static java.lang.System.out;public class Main{原创 2021-01-26 09:34:28 · 194 阅读 · 0 评论 -
1353. 滑雪场设计 ( 枚举 )
AcWing:1353. 滑雪场设计根据数据量 1 ~ 1000, 所以我们可以考虑枚举所有的情况每座山的高度是 0 ~ 100考虑穷举整改后的最低山谷 i 从 [ 0, (100 - 17)]然后遍历所有的雪山,在假设的最低山谷还要小的山谷添加高度,在假设最低山谷高出17高度的山峰进行消减,分别计算添加/消减的花费即可.AC Codeimport java.util.*;import static java.lang.System.out;public class Main{原创 2021-01-25 08:38:44 · 234 阅读 · 1 评论 -
1381. 阶乘 ( 递推模拟 )
AcWing:1381. 阶乘每次保留后面7位使用 long 保存中间结果AC Codeimport java.util.*;import static java.lang.System.out;public class Main{ public static void main(String [] args) { Scanner in = new Scanner(System.in); int n = in.nextInt();原创 2021-01-25 07:19:14 · 162 阅读 · 0 评论 -
1371. 货币系统 ( 完全背包问题 )
AcWing:1371. 货币系统题型: 3. 完全背包问题dp 问题每次货币使用的次数不限, 完全背包问题(求解的时候在一定的容量下,可以获得的物品的最大价值)而这里是求方案数AC Codeimport java.util.*;import static java.lang.System.out;public class Main{ public static void main(String[] args) { Scanner in = new原创 2021-01-23 12:43:34 · 157 阅读 · 0 评论 -
1432. 棋盘挑战 ( 八皇后变形 dfs回溯 )
AcWing:1432. 棋盘挑战一开始把这个条件每条对角线上都最多只能有一个棋子理解错了,以为只是说限定整个矩阵的主对角线 and 副对角线上都只能最多放一个棋子其实是在当前位置放下的每个棋子对应的主对角线 and 副对角线.八皇后变形, dfs 枚举即可当前位置(row, col)副对角线上对应的所有位置: i + j == row + col主对角线上对应的所有位置: 看别人的代码是 n + (row - j) // 长见识了AC Codeimport jav原创 2021-01-22 06:58:28 · 166 阅读 · 0 评论 -
754. 平方矩阵 II ( 模拟 )
AcWing:754. 平方矩阵 II可以使用类似于打印蛇形数组的方式、756. 蛇形矩阵 ( 模拟 )模拟即可AC Codeimport java.util.*;import static java.lang.System.out;public class Main{ public static void main(String[] args) { Scanner in = new Scanner(System.in);原创 2021-01-21 03:03:32 · 246 阅读 · 0 评论 -
1341. 十三号星期五 ( 枚举 模拟 )
AcWing:1341. 十三号星期五枚举模拟即可主要是处理好星期几的部分rem 余数这里: 0 星期天、 1 星期一、 2 星期二、 3 星期三、 4 星期四、 5 星期五、 6 星期六AC Codeimport java.util.*;import static java.lang.System.out;public class Main{ public static void main(String[] args) { Scanner in =原创 2021-01-20 22:07:46 · 146 阅读 · 0 评论 -
1532. 找硬币 ( 哈希表 / 双指针 )
AcWing:1532. 找硬币思路:哈希表双指针AC Code 哈希表import java.util.*;import static java.lang.System.out;public class Main{ public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); i原创 2021-01-19 13:53:32 · 150 阅读 · 0 评论 -
1208. 翻硬币 ( 递推 / 思维 )
AcWing:1208. 翻硬币太巧妙了,看完题目基本是没有思路的, 不知道怎么入手偏思维, 我们只需要从前往后遍历, 遇到不同就将当前与下一个进行翻转,因为题目保证有解, 所以必定是可以恢复到原来的.AC Codeimport java.util.*;import static java.lang.System.out;public class Main{ public static void main(String[] args) { Scanne原创 2021-01-18 14:04:04 · 217 阅读 · 3 评论 -
429. 奖学金 ( 自定义排序 )
AcWing:429. 奖学金自定义排序.自定义排序需要利用到语文成绩、学号、总分, 所以需要将这三个加入到集合中。AC Codeimport java.util.*;import static java.lang.System.out;public class Main{ public static void main(String[] args) { Scanner in = new Scanner(System.in); int n原创 2021-01-17 18:53:11 · 299 阅读 · 0 评论 -
422. 校门外的树 ( 模拟 + 区间合并 )
AcWing:422. 校门外的树模拟比较恶心的就是它包括区间的两个端点, 其实也不需要刻意的去注意端点不端点的,大家一起都不算那就完事了, 总数不会变策略:将区间按起点从小到大进行排序,其次按照区间终点进行从小到大排每次记录起点与终点,当当前终点包括下一个区间的起点,更新当前终点的最远距离。否则,结算区间结果,更新起点 and 终点AC Codeimport java.util.*;import static java.lang.System.out;public class原创 2021-01-16 15:01:22 · 164 阅读 · 0 评论 -
1227. 分巧克力 ( 二分 )
AcWing:1227. 分巧克力二分,枚举 1 到 100000 大小的巧克力块, 找到能够分成满足 k 个孩子的大小。AC Codeimport java.util.*;import static java.lang.System.out;public class Main{ public static void main(String[] args) { Scanner in = new Scanner(System.in); in原创 2021-01-15 13:22:53 · 159 阅读 · 0 评论 -
517. 信息传递 ( 有向图的最小环 并查集 )
AcWing:517. 信息传递并查集题目大意:找出有向图的最小环题解:使用并查集判断是否构成环,如果构成就求出它的大小,环的长度为到父亲结点上的点数(边数+1)。AC Codeimport java.util.*;import static java.lang.System.out;public class Main{ static int[] fa = new int[(int)2e5 + 7]; static int cnt, ans = Integer原创 2021-01-14 12:56:24 · 292 阅读 · 0 评论 -
680. 剪绳子 ( 二分 )
AcWing:680. 剪绳子二分查找实属没有想到通过二分在绳子的最短0 和 最长 1e9 中找到数组中绳子能够切割成 m 根等长的绳子AC Codeimport java.util.*;import static java.lang.System.out;public class Main{ public static void main(String[] args) { Scanner in = new Scanner(System.in);原创 2021-01-14 12:18:53 · 150 阅读 · 0 评论 -
784. 强盗团伙 ( 反集(并查集) )
AcWing:784. 强盗团伙思路:使用并查集, 将符合同一团伙条件的强盗都串起来, 最后 fa[i] == i 本身的就当作是团队头子, ans++利用 n + a / b 作中间桥梁关于反集如果 a 和 b 是敌人,合并 n+b 和 a,n+a 和 b如果 c 和 a 是敌人,合并 n+c 和 a,n+a 和 c那么b和c就并在一起了这样就符合了题目敌人的敌人是朋友的规则AC Codeimport java.util.*;import static java.lang原创 2021-01-13 20:00:55 · 515 阅读 · 2 评论 -
1346. 回文平方 ( 模拟 + 双指针 )
AcWing:1346. 回文平方模拟, 双指针注意细节: 进制字符串的字母是大写,根据字符串的长度(奇数或者偶数),最后 left >= rightAC Codeimport java.util.*;import static java.lang.System.out;public class Main{ public static void main(String[] args){ Scanner in = new Scanner(Syste原创 2021-01-13 18:40:26 · 128 阅读 · 0 评论 -
836. 合并集合 ( 并查集 )
AcWing:836. 合并集合并查集, 在当前状态查找当前值的根节点,若拥有同一个根节点,则说明是在同一个集合中。AC Codeimport java.util.*;import static java.lang.System.out;public class Main{ static int[] fa = new int[100007]; public static int findset(int x){ if(x == fa[x])原创 2021-01-12 07:30:51 · 198 阅读 · 0 评论 -
145. 超市 ( 并查集 )
Acwing:145. 超市贪心策略:在不过期的时间内优先卖出利润更大的产品。按照价值降序,每次扫描到一个价值,尝试一下在过期之前能不能卖出去;此时可能已经有比它更大价值的产品占用了一些日期,于是从过期时间往前面找,直到找到一个空位置。如果这个空位置大于0,那么就把这个产品安排在这天卖出。并查集优化找位置AC Codeimport java.util.*;import static java.lang.System.out;public class Main{ s原创 2021-01-12 02:37:34 · 227 阅读 · 0 评论 -
1113. 红与黑 ( dfs / bfs )
AcWing:1113. 红与黑深度优先遍历 / 广度优先遍历AC Codeimport java.util.*;import static java.lang.System.out;public class Main{ static int ans = 0; public static void main(String[] args) { Scanner in = new Scanner(System.in);原创 2021-01-12 01:28:36 · 274 阅读 · 1 评论 -
756. 蛇形矩阵 ( 模拟 )
AcWing:756. 蛇形矩阵模拟AC Codeimport java.util.*;import static java.lang.System.out;public class Main{ public static void main(String[] args){ Scanner in = new Scanner(System.in); int n = in.nextInt(); int m = in.nextIn原创 2021-01-11 23:46:55 · 170 阅读 · 0 评论 -
898. 数字三角形 ( 自下向上状态转移 )
AcWing:898. 数字三角形思路:从下到上进行叠加, 当前的与后一个进行比较,取最大值,然后将最大值叠加到上一层的数中,依次递推。最后三角形最顶部就是答案.AC Codeimport java.util.*;import static java.lang.System.out;public class Main{ public static void main(String[] args){ Scanner in = new Scanner(Syst原创 2021-01-10 14:48:47 · 169 阅读 · 0 评论 -
104. 货仓选址 ( 贪心 )
AcWing:104. 货仓选址贪心题猜:选址的位置区间应该在数组从小到大排序之后,出现在中间两个值的中间思路:找出中间的两个值, 然后遍历这个区间当当前位置为所选地址, 枚举总距离之和。AC Code 1import java.util.*;import static java.lang.System.out;public class Main{ public static void main(String[] args) { Scanner i原创 2021-01-09 19:45:10 · 337 阅读 · 0 评论 -
160. 匹配统计 ( kmp + 后缀和思想 )
LeetCode:160. 匹配统计题目中所要求的满足匹配的前缀恰好为 x 的答案的应为 匹配的前缀至少为 x 的后缀数量 减去 匹配的前缀至少为 x + 1 的后缀数量,即 cnt[x] - cnt[x + 1](后缀和思想),难理解 >> 待补AC Codeimport java.util.*;import static java.lang.System.out;public class Main{ public static void main原创 2020-12-18 01:10:26 · 228 阅读 · 0 评论 -
1205. 买不到的数目 ( 数学 / 规律 )
LeetCode: 1205. 买不到的数目题目大意: 给定两个数n、m, 算出这两个数不能组合成的最大的数打表发现如果n、m这两个数如果存在最大公约数大于 1 ,那么就会找不到最大的,一直计算。。定理:(1)如果p和q的最大公约数 > 1 ,那么一定不存在p和q无法组成的最大的数(2)如果p和q互质,那么p和q无法组成的最大的数就是 (p−1)∗(q−1)−1(p-1) * (q-1) - 1(p−1)∗(q−1)−1AC Codeimport java.util.*;im原创 2020-12-16 23:27:43 · 296 阅读 · 0 评论