LeetCode 第 150 场周赛】的更多相关文章

一.拼写单词(LeetCode-1160) 1.1 题目描述 1.2 解题思路 由于给定的chars,每个字母只能用一次,所以用大小为26的数组charsArray来表示a-z(例如charsArray[0]代表字符a可以使用的次数,charsArray[25]代表字符z可以使用的次数),存放某字符的可使用的个数. 遍历单词列表,复制一份charsArray,使用一次,就将单词可使用次数减1. 若需要用到的字符时,该在charsArray的数量为0,则该单词不符合条件. 1.3 实现代码 cla…
LeetCode 第 165 场周赛 5275. 找出井字棋的获胜者 5276. 不浪费原料的汉堡制作方案 5277. 统计全为 1 的正方形子矩阵 5278. 分割回文串 III C 暴力做的,只能说数据不充分 找出井字棋的获胜者4 题目描述 Description A 和 B 在一个 3 x 3 的网格上玩井字棋. 井字棋游戏的规则如下: 玩家轮流将棋子放在空方格 (" ") 上. 第一个玩家 A 总是用 "X" 作为棋子,而第二个玩家 B 总是用 "…
Leetcode第 217 场周赛 比赛链接:点这里 做完前两题我就知道今天的竞赛我已经结束了 这场比赛思维量还是比较大的. 1673. 找出最具竞争力的子序列 题目 给你一个整数数组 nums 和一个正整数 k ,返回长度为 k 且最具 竞争力 的 nums 子序列. 数组的子序列是从数组中删除一些元素(可能不删除元素)得到的序列. 在子序列 a 和子序列 b 第一个不相同的位置上,如果 a 中的数字小于 b 中对应的数字,那么我们称子序列 a 比子序列 b(相同长度下)更具 竞争力 . 例如…
今天参加了leetcode的周赛,算法比赛,要求速度比较快.有思路就立马启动,不会纠结是否有更好的方法或代码可读性.只要在算法复杂度数量级内,基本上是怎么实现快速就怎么来了. 比赛时先看的第二题,一看题就有了思路,直接用的广度优先搜索,写完提交正确.再一看有人都做了3道题了,应该是职业选手了,要多像他们看齐. 之后看第一题,发现直接用贪心就能做,写了个双重循环,一次过掉. 第三题求最优连续子数组和,想到是动态规划.然后在处理代码细节上花了很长时间,中间提交还错了一次,在十一点半左右提交通过. 再…
这是我第一次写周赛的题目,而且还是虚拟的.从这次起,以后就将所有错过的题目都写到博客来.当然既然是我错的,那代码肯定不是我自己的.我会注明来源.并且我会自己敲一遍.多总结总是没坏处的. 另外比较糟糕的是我错过了PAT的报名时间(截止到8/30 12:00),所以暂时我就不刷PAT的题目,专注于LeetCode的题目. 下面进入正题 1169. 查询无效交易 这题真滴不难,但是我当时想的非常复杂,我以为不会这么简单的就那么两个条件判断...谁曾想,真滴就是这样... 参考:uwi 这位大神的. 思…
这算是我第一次正式参加 LeetCode 的周赛吧.通过两道题.意料之中(通过上次模拟可以看出来).总的来说,脑袋还是不太灵光.想的有点慢.全球第一名 0:10:19 就全部通过...感觉我的智商被狠狠的摁在地上摩擦了. 参考:huntersjm 5175. 构建回文串检测 我第一次提交的直接 TLE.然后就没有然后了. TLE 代码的思路(可以不看): 定义一个 int 型的 notParesNum 保存字母个数为奇数的字母的数量. 每次检测,将 [left, right] 字串取出,统计里面…
5452. 判断能否形成等差数列   给你一个数字数组 arr . 如果一个数列中,任意相邻两项的差总等于同一个常数,那么这个数列就称为 等差数列 . 如果可以重新排列数组形成等差数列,请返回 true :否则,返回 false . 示例 1: 输入:arr = [3,5,1] 输出:true 解释:对数组重新排序得到 [1,3,5] 或者 [5,3,1] ,任意相邻两项的差分别为 2 或 -2 ,可以形成等差数列. 示例 2: 输入:arr = [1,2,4] 输出:false 解释:无法通过…
今天的比赛的题目相对来说比较「直白」,不像前几周都是一些特定的算法,如果你没学过不可能想出来. 做了这些周,对leetcode比赛的题目也发现了一些「规律」. 一般前两道题都很「简单」,只要有想法,直接敲代码就能解出来.更多考察的是结果是否正确,速度其次. 后两道题有些难度 ,不同场次难度不一样,也可能和不同人的水平感受不同.但是肯定比前两道要难. 一般在做后两道题的时候,只要复杂度是对的,一些细节也不用考虑太多.例如数组开的空间大小,一些线性的提前剪枝判断,写不写都可以过.最主要的是复杂度是同…
比赛链接 最近不怎么打比赛,不能马上反应过来考察的是什么,全部忘光光了... 6192. 公因子的数目 题意: 给定 \(a\) 和 \(b\),问两者的公因子数量 数据范围:\(1\leq a,b\leq 1000\) 题解: 从 \(1\) 到 \(\min(a,b)\) 暴力枚举判断即可 答案为:\(\sum\limits_{i=1}^{min(a,b)} [a\%i==0\ and\ b\%i==0]\) 时间复杂度:\(O(min(a,b))\) 代码: class Solution…
周日的比赛的时候正在外面办事,没有参加.赛后看了下题目,几道题除了表面要考的内容,还是有些能发散扩展的地方. 做题目不是最终目的,通过做题发现知识盲区,去研究学习,才能不断提高. 理论和实际是有关系的,一些题目也都有现实意义.计算机的一些模拟操作,通过数学算法,能够大大减轻代码量和算法复杂度. 第一题是机器人在坐标系上直走和转弯,通过简单的模拟就能实现.但是仔细思考发现还能通过线性代数,坐标变换的方式做,这样在实际中计算更快.甚至还可以用复数来做. 实际扫地机器人可能就用到了类似的算法.让他能够…
这周比赛的题目很有特点.几道题都需要找到一定的技巧才能巧妙解决,和以往靠数据结构的题目不太一样. 就是如果懂原理,代码会很简单,如果暴力做,也能做出来,但是十分容易出错. 第四题还挺难想的,想了好久才想明白.这次先讲第四题,然后再讲其他的题目. 下面是详细的题解和思考. 比赛的地址 Weekly Contest 135 https://leetcode-cn.com/contest/weekly-contest-135 移动石子直到连续 II 题目:移动石子直到连续 II(Moving Ston…
估计要刷很久才能突破三道题了.还是刷的太少.尽管对了前两题,但是我觉得写的不怎么样.还是将所有题目都写一下吧. 5189. "气球" 的最大数量 题目比较简单.就是找出一个字符串中,balloon 中每个字母出现的次数,次数最小的就是结果.注意,l 和 o 要除以 2. 定义一个数组统计每个字母的个数. int[] count = new int[26];// 统计每个字母的个数 时间复杂度:只有一个循环,故为 O(n)O(n)O(n). 空间复杂度:只有一个一维数组大小恒为 26,故…
一. 缀点成线(LeetCode-5230) 1.1 题目描述 1.2 解题思路 比较简单的一题,利用公式 y = kx + b,确定好k和b就好,并且要考虑一种情况,函数 x = h. 1.3 解题代码 public boolean checkStraightLine(int[][] coordinates) { int k = Integer.MIN_VALUE; int x1 = coordinates[0][0]; int y1 = coordinates[0][1]; int x2 =…
一.最小绝对差(LeetCode-5189) 1.1 题目描述 1.2 解题思路 数组排好序,获取最小的差值即可. 1.3 解题代码 public class Solution { class Test { public List<Integer> list; public Integer num; } public List<List<Integer>> minimumAbsDifference(int[] arr) { int len = arr.length; L…
一."气球" 的最大数量(LeetCode-5189) 1.1 题目描述 1.2 解题思路 统计各个字母的出现的次数,然后根据"木桶最短板"返回就好. 1.3 解题代码 public class Solution { public int maxNumberOfBalloons(String text) { int[] arr = new int[5]; char[] charArray = text.toCharArray(); for(char ch:charA…
一.公交站间的距离(LeetCode-5181) 1.1 题目描述 1.2 解题思路 比较简单的一题,顺时针.逆时针两次遍历,就能解决. 1.3 解题代码 class Solution { public int distanceBetweenBusStops(int[] distance, int start, int destination) { int res = 0; int len = distance.length; int i = start; do { res += distanc…
一.质数排列(LeetCode-1175) 1.1 题目描述 1.2 解题思路 先统计出1-n中有多少个质数,得到质数个数\(x\),剩下的数\(y = n - x\): 使用排列组合公式得出结果 \(A_x^x A_y^y\) 1.3 解题代码 private static final long INF = 1000000007; public int numPrimeArrangements(int n) { int count = countPrime(n); //剩余位数 int oth…
一.查询无效交易(LeetCode-1169) 1.1 题目描述 1.2 解题思路 根据,它和另一个城市中同名的另一笔交易相隔不超过 60 分钟(包含 60 分钟整) 得出 城市A和其他城市任何一笔交易,时间的绝对值要大于60分钟才有效,若小于60分钟,则当前交易和其他城市的交易均无效. 理解了这层意思,问题就基本解决了.如果想到所有交易按时间排序,就把问题想复杂了. 1.3 解题代码 public class Solution { List<String> res = new ArrayLi…
成绩 一.一年中的第几天(LeetCode-1154) 1.1 题目描述 1.2 解题思路 比较容易的一题,搞清楚平年.闰年的判定规则,就很容易做出来. 1.3 解题代码 class Solution { public int ordinalOfDate(String date) { String[] dateArray = date.split("-"); int year = Integer.parseInt(dateArray[0]); int month = Integer.p…
1290.二进制链表转整数 1291.顺次数 1292.元素和小于等于阈值的正方形的最大边长 1293.网格中的最短路径 1290.二进制链表转整数 1290.二进制链表转整数 给你一个单链表的引用结点 head.链表中每个结点的值不是 0 就是 1.已知此链表是一个整数数字的二进制表示形式. 请你返回该链表所表示数字的 十进制值 . 样例输入与样例输出 Sample Input and Sample Output 示例 1: **输入:** head = [1,0,1] **输出:** 5 *…
访问所有点的最小时间 不难看出,从点(x1,y1) 到 (x2,y2) 的步数需要 min(dx,dy),其中 dx = abs(x1-x2),dy = abs(y1-y2) class Solution { public: int minTimeToVisitAllPoints(vector<vector<int>>& points) { int ans(0); int x = points[0][0],y = points[0][1]; for(int i = 1,sz…
5292. 划分数组为连续数字的集合 给你一个整数数组 nums 和一个正整数 k,请你判断是否可以把这个数组划分成一些由 k 个连续数字组成的集合. 如果可以,请返回 True:否则,返回 False. 示例 1: 输入:nums = [1,2,3,3,4,4,5,6], k = 4 输出:true 解释:数组可以分成 [1,2,3,4] 和 [3,4,5,6]. **题目表述为集合,不是数组. =__=** 输入:nums = [3,3,2,2,1,1], k = 3 输出:true 分析:…
5117.IP地址无效化 首先计算出输入IP地址的长度,然后遍历每一个字符. 如果当前字符为'.',就在它的前后两侧分别加上'['和']'字符. 值得一提的是,C++的String类型提供了以上操作的函数,我们可以直接调用内部函数,使得我们的程序更加简洁,更加清晰明了. 下面给出AC代码: class Solution { public: string defangIPaddr(string address) { int len = address.size();//直接计算出IP地址的长度 f…
给你一个 m * n 的矩阵,矩阵中的数字 各不相同 .请你按 任意 顺序返回矩阵中的所有幸运数. 幸运数是指矩阵中满足同时下列两个条件的元素: 在同一行的所有元素中最小 在同一列的所有元素中最大 示例 1: 输入:matrix = [[3,7,8],[9,11,13],[15,16,17]] 输出:[15] 解释:15 是唯一的幸运数,因为它是其所在行中的最小值,也是所在列中的最大值. 示例 2: 输入:matrix = [[1,10,4,2],[9,3,8,7],[15,16,17,12]]…
一.函数的运用 1,strstr(a,b); 判断b是否为a的子串,如果是,返回从b的开头开始到a的结尾 如“abcdefgh” “de” 返回“defgh”: 如果不是子串,返回NULL: 2,memcpy(a,b+n,c); 将b串从第n位后的c个字符串复制到a中,返回a串: (注:做完函数后需要添加上b[c] = '\0') 如果吧b+n换成b就是从头开始 将代码换成 memcpy(arr[cnt], words[i], strlen(words[i])+); 就是直接复制words[i]…
当时居然没想到,我真菜,就当记录一下了. 思路分析: 分为两种: 第一种:走两步的,无论是奇或偶的位置,只要走两步,代价为0: 第二种:走一步的,就是偶数到奇数,或者奇数到偶数,代价为1: 那么实际上,到最后,可以因为代价为0的走法,直接变成了,一个偶数和邻近的一个奇数了(恐怖如斯) 转化成了奇数多,还是偶数多的问题了. 贴下代码:…
当时做的时候,一直理解想搞dp,后面可能思路有点乱了,写不出来... 看了评论区的大佬,才发现是滑动窗口的题目,学习到了. 思路分析: 1.这题可以转化成求数组最大子数组的和不超过maxCost的长度 2.每次查找就更新一次,循环完之后,就是最大的了,滑动窗口安排. 贴上代码…
思路分析:先用哈希表统计各个数字的次数,再将每个值放进set集合中,之后如果有重复得,说明比原个数少了,如果都是独一无二的,那么个数是相同的 这波把collection集合,强转成set是真的灵性.想不到的,就自己构造一个set集合.…
LeetCode-第 166 场周赛 1281.subtract-the-product-and-sum-of-digits-of-an-integer 1282.group-the-people-given-the-group-size-they-belong-to 1283.find-the-smallest-divisor-given-a-threshold 1284.minimum-number-of-flips-to-convert-binary-matrix-to-zero-matr…
LeetCode--第180场周赛 1380. 矩阵中的幸运数 class Solution { public: vector<int> luckyNumbers (vector<vector<int>>& matrix) { vector<int> ans; int m = matrix.size(); int n = matrix[0].size(); for (int i = 0; i < m; i++) { for (int j = 0…