每日一题
zbsnzj
这个作者很懒,什么都没留下…
展开
-
每日一题——LeetCode1779.找到最近的有相同X或Y坐标的点
方法一 循环遍历所有点。原创 2024-04-02 19:09:23 · 272 阅读 · 0 评论 -
每日一题——LeetCode1758.生成交替二进制字符串的最少操作步骤
交替字符串只有两种可能一种是01开头的如01010101...,另一种就是10开头的10101010....将s与两种可能的字符串都进行比较,看变成这两种字符串需要操作多少次,取更小操作次数。原创 2024-03-31 15:36:05 · 311 阅读 · 0 评论 -
每日一题——LeetCode1752.检查数组是否经排序和轮转得到
【代码】每日一题——LeetCode1752.检查数组是否经排序和轮转得到。原创 2024-03-30 16:49:20 · 395 阅读 · 0 评论 -
每日一题——LeetCode1748.唯一元素的和
【代码】每日一题——LeetCode1748.唯一元素的和。原创 2024-03-27 14:55:26 · 212 阅读 · 0 评论 -
每日一题——LeetCode1742.盒子中小球的最大数量
最大编号10^5,那么盒子的编号不会超过45,直接创建一个数组,数组长度动态分配为highLimit的位数m*9,然后数组的每一项来计数编号的和,返回数组中最大的那一项。就是统计所有编号的每位和,然后取出数量最多的那个和。原创 2024-03-26 14:06:31 · 245 阅读 · 0 评论 -
每日一题——LeetCode1720.解码异或后的数组
由于 arr[0]=first已知,因此对 i从 1到 n−1依次计算 arr[i] 的值,即可解码得到原数组arr。0异或任何数,结果都是那个数本身。一个数异或它自己,结果总是0。方法一 异或运算的性质。原创 2024-03-22 14:18:00 · 325 阅读 · 0 评论 -
LeetCode——每日一题1736.替换隐藏数字得到的最晚的时间
没啥好说的,第一位要看第二位,第二位要看第一位,分和秒都往大取。原创 2024-03-25 13:36:11 · 162 阅读 · 0 评论 -
每日一题——LeetCode1725.可以形成最大正方形的矩阵
一次遍历时就维护一个最大值maxlen,拿rectangles里每一项中的更下值和maxlen对比,相等就计数+1,如果大于maxlen就更新maxlen的值,计数重置为1。对于rectangles里的每一个二元数组,只要保留两个元素中更小的那一个就行,这样就转为了一维数组,然后计算一维数组中最大值出现了几次就行。原创 2024-03-24 13:11:11 · 277 阅读 · 0 评论 -
每日一题——LeetCode2549.统计桌面上的不同数字
维护一个数组arr,初始值为n,每次循环将arr[i] % j(1<=j<=n) 如果结果为1则将j加入,当 n>1时,那么经过多次操作后,一定可以将 n−1,n−2,…,2 依次放到桌面上。最后将arr转为Set集合去重,Set的长度就是答案。当 n=1 时,桌面只有一个数字 1。原创 2024-03-23 14:17:57 · 375 阅读 · 0 评论 -
每日一题——LeetCode1716.计算力扣银行的钱
因为每周七天存的钱之和比上一周多 777 块,因此每周存的钱之和的序列是一个等差数列,我们可以用等差数列求和公式来求出所有完整的周存的钱总和。剩下的天数里,每天存的钱也是一个等差数列,可以用相同的公式进行求和。最后把两者相加可以得到答案。每七天为一个节点,从周一到周日每天比前一天+1,到了下一个周一,比上一个周一+1,再继续从周一到周日每天+1。方法二 等差数列求和优化(leetcode官方题解)原创 2024-03-21 13:25:53 · 235 阅读 · 0 评论 -
每日一题——LeetCode1710.卡车上的最大单元数
能装的箱子数是有限的,那么就要使每个箱子里的单元数尽可能大,将数组按照单元数进行排序,优先装单元数最大的箱子,再考虑后面的箱子。原创 2024-03-20 14:19:58 · 269 阅读 · 0 评论 -
每日一题——LeetCode1704.判断字符串的两半是否相等
从头到尾简历字符串,判断字符是否是元音字符,如果是再判断i的值是字符串前一半还是后一半,前一半sum1++,后一半sum2++原创 2024-03-19 16:43:10 · 162 阅读 · 0 评论 -
每日一题——LeetCode1700.无法吃午餐的学生的数量
对于students[0]和sandwiches[0],如果它们相同就从两个数组中都删除第一个元素,进行下一次比较,如果他们不同,则把student第一个元素移到最后面去,再次进行比较,知道sandwiches[0]已经不存在在students数组里就可以结束循环,最后students数组的长度就是输出值。用s0记录students里0的数量,s1记录1的数量,碰到sandwiches[0]==0则s0-1,sandwiches[0]==1则s1-1,最后s0和s1的和就是剩下的学生数量。原创 2024-03-18 14:03:24 · 318 阅读 · 0 评论 -
每日一题——LeetCode1694.重新格式化电话号码
对于str每三个数分成一组,加一个破折号,当str的长度小于等于4时再分情况讨论,如果等于4就分为2+2形式,如果小于4,剩下的就为一组。首先去除number里面的破折号和空格,取出纯数字组成的字符串str。原创 2024-03-17 19:47:54 · 219 阅读 · 0 评论 -
每日一题——1688.比赛中的配对次数
哇,这题怎么这么简单,上来直接奇偶判断循环秒了,一看官解,呵,果然也写的这么肤浅,这种题就懒得写题解了吧,下翻,方法二,holy shit,笑容立马收了起来。n个队伍,最后只有一个赢家,每场比赛只淘汰1个队伍,那么淘汰n-1个队伍就要n-1场比赛。原创 2024-03-16 17:16:20 · 143 阅读 · 0 评论 -
每日一题——LeetCode1684.统计一致字符串的数目
将allowd放入Set集合中,遍历words每一项的每一个字符看是否有allowd不含有的字符。方法二 Set+reduce() +every()方法一 Set()+双层for循环遍历。和方法一 一样的,写法不同。原创 2024-03-15 19:45:06 · 271 阅读 · 0 评论 -
每日一题——LeetCode2789.合并后数组中的最大元素
将数组倒序过来看,就是从最后一个数开始,如果它前面一个数小于等于它就可以把前面一个数吃掉同时加上前一个数的值形成一个新的数,如果碰到一个更大的数就吃不动了,那么就换那个更大的数去继续吃前面的数,以此类推,最后就可以吃出最大的值。原创 2024-03-14 13:40:50 · 757 阅读 · 0 评论 -
每日一题——LeetCode2864.最大二进制奇数
要构造的数必须是奇数,则最低位必须为1,从字符串s中选择一个1放到最低位,按照贪心原则,其他的1全部放在最高位。原创 2024-03-13 14:05:54 · 319 阅读 · 0 评论 -
每日一题——LeetCode1678.设计Goal解析器
将字符串转为数组,对数组进行遍历,碰到'G'保持不变,继续循环,碰到 '(' 看他后一位,是 ')' 则删除两个元素,添加一个 'o' ,不是则删除四个元素,添加元素 'al' ,最后将数组转回字符串。不需要原地修改command,也可以维护一个新字符串。方法一 splice。原创 2024-03-12 15:12:20 · 242 阅读 · 0 评论 -
每日一题——LeetCode1668.最大重复字符串
使用repeat()将word重复i次,看是否包含于sequence中,将最大的i赋值给k。方法一 includes()+repeat()秒了。方法三 KMP+动态规划。方法二 枚举+动态规划。原创 2024-03-11 14:50:42 · 722 阅读 · 0 评论 -
每日一题——LeetCode2129.将标题首字母大写
方法一 个人方法将字符串转为数组,遍历数组,对数组的每一个元素,先全部转为小写,如果当前元素长度大于2,将第一个字符转为大写形式var capitalizeTitle = function(title) { title=title.split(' ') for(let i=0;i<title.length;i++){ title[i]=title[i].toLowerCase() if(title[i].length>2){原创 2024-03-11 14:33:43 · 268 阅读 · 0 评论 -
每日一题——LeetCode1652.拆炸弹
无论k大于0还是小于0,其实都是一个长度为k的绝对值的窗口,窗口往右移动,每次去掉窗口的第一个值,加入窗口的后一个值,当窗口的左边界或右边界到达数组末尾就要跳转到数组开头,每次窗口的和就是一个密码值。写完后发现k>0 ,k<0方法其实是一样的,考虑是否能将这两种情况合并,缩减代码。原创 2024-03-10 16:55:52 · 292 阅读 · 0 评论 -
每日一题——LeetCode1646.获取生成数组中的最大值
【代码】每日一题——LeetCode1646.获取生成数组中的最大值。原创 2024-03-09 14:58:45 · 279 阅读 · 0 评论 -
每日一题——LeetCode1640.能否连接形成数组
本题题意其实是:每个pieces[i]都是个数组,如果pieces[i]是单元素数组那么只要arr里面也有这个元素就能连接成功,如果pieces[i]是多元素数组,那么arr里需要有一段和pieces[i]顺序和值完全相同的元素才能连接成功,比如arr=[49,18,16],pieces=[ [16,18,49] ],虽然16、18、49这三个元素在arr里面都有,但是他们出现的顺序不一样也不能连接成功。原创 2024-03-09 14:45:43 · 196 阅读 · 0 评论 -
每日一题——1636.按照频率将数组升序排序
用数组的键值对形式保存每个数字和他出现的次数,将对象的键值对转为数组,对数组进行自定义sort()排序,优先使用出现频次排序,如果出现频次一样就用大小就行排序。用Map集合记录数字和出现的次数,按照元素频率和数值对数组进行排序即可。排序完后按照出现频次拼接成字符串再转为数组。原创 2024-03-08 16:58:02 · 133 阅读 · 0 评论 -
每日一题——LeetCode1624.两个相同字符之间的最长子字符串
保存每种字符首次出现的位置,再碰到这个字符时用它的当前位置减去首次出现的位置得到的长度与最大长度进行比较。原创 2024-03-08 14:42:02 · 235 阅读 · 0 评论 -
每日一题——LeetCode1592.重新排列单词间的空格
把text字符串用空格符分隔成数组,数组长度-1就是原字符串中空格的数量,将数组中的单词都提取到words数组中,有了空格数量和单词数量就能计算出相邻单词间需要的空格数量,维护一个空字符串str,str先加上一个单词然后加上相应的空格数量,多余的空格放到字符串末尾。原创 2024-03-07 14:48:40 · 668 阅读 · 0 评论 -
每日一题——LeetCode2575.找出字符串的可整除数组
直接循序字符串,每次多取一位,转为整数型然后去除m,但是后面word的长度会很长,转为整数时会丢失精度,得到的结果不准确,如果使用大数字型BigInt()也不行,会超时。思路和官方是一样的,直接看官方的公式吧。方法一 暴力(不可行)原创 2024-03-07 14:08:40 · 224 阅读 · 0 评论 -
每日一题——LeetCode1588.所有奇数长度子数组的和
比如对于[1,4,2,5,3] ,对于第一个元素1,有[1]、[1,4,2]、[1,4,2,5,3]这三种可能,对于第二个元素4,有[4]、[4,2,5]这两种可能,以此类推,反复累加最后得到sum。数组中每个元素都会在不同长度的奇数子数组中出现一次或多次,只要计算出每个元素在多少个长度为奇数的子数组中出现,就能得到所有奇数长度子数组的和。构造前缀和数组prefixSums,数组每一项prefixSums[i]保存的是数组arr从下标0到下标i-1的元素和。原创 2024-03-06 14:24:26 · 680 阅读 · 0 评论 -
每日一题——LeetCode1582.二进制矩阵中的特殊位置
先把矩阵每一行和每一列中1的数量统计出来,然后遍历矩阵,元素为1的位置看他所在的行和列的1的数量是否都为1即为满足题意的点。统计每一行1的频次,然后在第一行对应列加上这个频次,如果当前行是第一行,避免重复统计需要减1。原创 2024-03-05 14:50:45 · 606 阅读 · 0 评论 -
每日一题——LeetCode1576.替换所有的问号
替换为和他左右都不相等的字符,那么找3个字符abc,?总能替换为abc中的一个字符,遍历字符串找到所有?替换为abc中的一个字符。方法一 3个字母原则。原创 2024-03-04 14:16:53 · 347 阅读 · 1 评论 -
每日一题——LeetCode1572.矩阵对角线元素的和
逐行遍历,记当前行号为i,每一行的对角线元素为(i,i)和(i,len-i-1)用len&1,如果len为奇数结果为1,len为偶数结果为0。x=y 或 x+y = len-1 (len为矩阵长度)如果len为奇数则对角线交点会被计算两次,需要减掉一次。原创 2024-03-03 13:35:32 · 239 阅读 · 0 评论 -
每日一题——LeetCode1566.重复至少K次且长度为M的模式
【代码】每日一题——LeetCode1566.重复至少K次且长度为M的模式。原创 2024-03-02 14:43:38 · 357 阅读 · 0 评论 -
每日一题——LeetCode1560.圆形赛道上经过次数最多的扇区
如果rounds[i]>rounds[i+1],比如[3,1],说明从上一个圆跑到下一个圆了,要分为两部分进行累加。如果rounds[i]<rounds[i+1],比如[1,3]说明还在同一个圆上,直接对经过的扇区进行累加。累加的时候应该是左开右闭,因为下一次的起始扇区是上一次的结束扇区,要避免重复计算。遍历rounds数组,对于rounds[i]和rounds[i+1]进行比较。维护一个res数组用来记录每一扇区经过的次数。用max记录经过扇区的最大次数。以示例1为例子,n=4。原创 2024-03-01 14:08:32 · 300 阅读 · 0 评论 -
每日一题——LeetCode1556.千位分隔符
把n转为字符串,逆序遍历n,把n的每个元素加入res,每三次加入'.',最后将res翻转再转为字符串即为符合题目要求的结果。方法二 API函数(娱乐写法)原创 2024-02-29 12:03:09 · 302 阅读 · 0 评论 -
每日一题——LeetCode1544.整理字符串
维护一个栈,栈内没有元素则直接将字符放入栈中,如果下一个字符与栈顶元素能满足为同一字符的大小写则从栈中弹出元素,最后栈中剩下的元素就是满足题意的删除后的字符串。将字符串转为数组,遍历数组,如果碰到同一字母大写小写连续出现就原地删除这两个元素,最后把数组转回字符串并返回。方法一 字符串转数组删除元素。原创 2024-02-28 14:34:47 · 270 阅读 · 0 评论 -
每日一题——LeetCode1528.重新排列字符串
按照s和indices的对应关系构建二维数组,把二维数组按照indices部分元素从小到大排序,按顺序取出s部分的字符。新建一个数组arr,按照indices里的元素当作arr的索引,在索引位置插入s里的字符,最后把arr拼接为字符串。方法二:二维数组排序。原创 2024-02-27 11:15:09 · 251 阅读 · 0 评论 -
每日一题——LeetCode1518.换水问题
emptyBottles为空瓶数量,初始值为numBottles,maxBottles为最多能喝到多少瓶水的数量,初始值也为numBottles,exchangeBottles为每次用空瓶能换到水的数量。用空瓶不断去换水,maxBottles每次累加换到的水的数量,换了的水喝完又变成空瓶,emptyBottles又要加上换到的水的数量,以此循环直到空瓶的数量换不了水为止。原创 2024-02-26 11:59:13 · 273 阅读 · 0 评论 -
每日一题——LeetCode1512.好数对的数目
【代码】每日一题——LeetCode1512.好数对的数目。原创 2024-02-24 15:33:28 · 291 阅读 · 0 评论 -
每日一题——LeetCode1502.判断是否能形成等差数列
找出arr里的最大值和最小值,如果最大值等于最小值说明arr里的元素都是相同的diff=0,return true。= min,那么用(max-min)/ arr.length-1 可以得出等差数列的差diff。遍历arr里的没一个元素num,对于任意num,它与min的差应该是diff的倍数,并且不能出现相同的倍数,用Set集合保存倍数值,如果出现相同的倍数则return false。原创 2024-02-23 12:36:42 · 535 阅读 · 0 评论