每日一题
倚肆
请大家多多点赞关注收藏,若有问题可私信。
ε=ε=ε=(#>д<)ノ
展开
-
每日一题:22. 仅仅反转字母 (C++)
题目给你一个字符串 s ,根据下述规则反转字符串:所有非英文字母保留在原有位置。所有英文字母(小写或大写)位置反转。返回反转后的 s 。示例 1:输入:s = “ab-cd”输出:“dc-ba”示例 2:输入:s = “a-bC-dEf-ghIj”输出:“j-Ih-gfE-dCba”示例 3:输入:s = “Test1ng-Leet=code-Q!”输出:“Qedo1ct-eeLg=ntse-T!”提示1 <= s.length <= 100s 仅由 ASCII原创 2022-02-23 18:47:18 · 793 阅读 · 3 评论 -
每日一题:21. 1比特与2比特字符 (C++)
题目有两种特殊字符:第一种字符可以用一个比特 0 来表示第二种字符可以用两个比特(10 或 11)来表示、给定一个以 0 结尾的二进制数组 bits ,如果最后一个字符必须是一位字符,则返回 true 。示例 1:输入: bits = [1, 0, 0]输出: true解释: 唯一的编码方式是一个两比特字符和一个一比特字符。所以最后一个字符是一比特字符。示例 2:输入: bits = [1, 1, 1, 0]输出: false解释: 唯一的编码方式是两比特字符和两比特字符。所以最原创 2022-02-20 02:56:05 · 212 阅读 · 0 评论 -
每日一题:21. 煎饼排序 (C++)
题目给你一个整数数组 arr ,请使用 煎饼翻转 完成对数组的排序。一次煎饼翻转的执行过程如下:选择一个整数 k ,1 <= k <= arr.length反转子数组 arr[0…k-1](下标从 0 开始)例如,arr = [3,2,1,4] ,选择 k = 3 进行一次煎饼翻转,反转子数组 [3,2,1] ,得到 arr = [1,2,3,4] 。以数组形式返回能使 arr 有序的煎饼翻转操作所对应的 k 值序列。任何将数组排序且翻转次数在 10 * arr.length 范围内原创 2022-02-19 02:50:28 · 502 阅读 · 0 评论 -
每日一题:20. 找出星型图的中心节点 (C++)
题目有一个无向的 星型 图,由 n 个编号从 1 到 n 的节点组成。星型图有一个 中心 节点,并且恰有 n - 1 条边将中心节点与其他每个节点连接起来。给你一个二维整数数组 edges ,其中 edges[i] = [ui, vi] 表示在节点 ui 和 vi 之间存在一条边。请你找出并返回 edges 所表示星型图的中心节点。示例 1:输入:edges = [[1,2],[2,3],[4,2]]输出:2解释:如上图所示,节点 2 与其他每个节点都相连,所以节点 2 是中心节点。示例 2:原创 2022-02-18 00:52:53 · 260 阅读 · 0 评论 -
每日一题:19. 骑士在棋盘上的概率 (C++)
题目:在一个 n x n 的国际象棋棋盘上,一个骑士从单元格 (row, column) 开始,并尝试进行 k 次移动。行和列是 从 0 开始 的,所以左上单元格是 (0,0) ,右下单元格是 (n - 1, n - 1) 。象棋骑士有8种可能的走法,如下图所示。每次移动在基本方向上是两个单元格,然后在正交方向上是一个单元格。每次骑士要移动时,它都会随机从8种可能的移动中选择一种(即使棋子会离开棋盘),然后移动到那里。骑士继续移动,直到它走了 k 步或离开了棋盘。返回 骑士在棋盘停止移动后仍留在原创 2022-02-17 23:58:29 · 231 阅读 · 0 评论 -
每日一题:18. 有序数组中的单一元素 (C++)
题目:给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次。请你找出并返回只出现一次的那个数。你设计的解决方案必须满足 O(log n) 时间复杂度和 O(1) 空间复杂度。示例 1:输入: nums = [1,1,2,3,3,4,4,8,8]输出: 2示例 2:输入: nums = [3,3,7,7,10,11,11]输出: 10提示:1 <= nums.length <= 1050 <= nums[i] <= 105来源:力原创 2022-02-14 18:36:48 · 356 阅读 · 0 评论 -
每日一题:17. 飞地的数量 (C++)
每日一题:17. 飞地的数量 (C++)原创 2022-02-13 20:38:02 · 205 阅读 · 0 评论 -
每日一题:16. “气球” 的最大数量 (C++)
每日一题:16. “气球” 的最大数量 (C++)原创 2022-02-13 20:33:26 · 171 阅读 · 0 评论 -
每日一题:15. 提莫攻击 (C++)
每日一题:15. 提莫攻击(C++) (C++) )题目:在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄。他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。当提莫攻击艾希,艾希的中毒状态正好持续 duration 秒。正式地讲,提莫在 t 发起发起攻击意味着艾希在时间区间 [t, t + duration - 1](含 t 和 t + duration - 1)处于中毒状态。如果提莫在中毒影响结束 前 再次攻击,中毒状态计时器将会 重置 ,在新的攻击之后,中毒影响将会在 dura原创 2021-11-10 15:40:47 · 111 阅读 · 0 评论 -
每日一题:14. 猜数字游戏 (C++)
每日一题:14. 猜数字游戏(C++) (C++) )题目:你在和朋友一起玩 猜数字(Bulls and Cows)游戏,该游戏规则如下:写出一个秘密数字,并请朋友猜这个数字是多少。朋友每猜测一次,你就会给他一个包含下述信息的提示:猜测数字中有多少位属于数字和确切位置都猜对了(称为 “Bulls”, 公牛),有多少位属于数字猜对了但是位置不对(称为 “Cows”, 奶牛)。也就是说,这次猜测中有多少位非公牛数字可以通过重新排列转换成公牛数字。给你一个秘密数字 secret 和朋友猜测的数字原创 2021-11-08 18:08:47 · 533 阅读 · 0 评论 -
每日一题:13. 范围求和 (C++)
每日一题:13. 范围求和(C++) (C++) )题目:给定一个初始元素全部为 0,大小为 m*n 的矩阵 M 以及在 M 上的一系列更新操作。操作用二维数组表示,其中的每个操作用一个含有两个正整数 a 和 b 的数组表示,含义是将所有符合 0 <= i < a 以及 0 <= j < b 的元素 M[i][j] 的值都增加 1。在执行给定的一系列操作后,你需要返回矩阵中含有最大整数的元素个数。示例:输入:m = 3, n = 3operations = [[原创 2021-11-07 16:50:27 · 171 阅读 · 0 评论 -
每日一题:12. 丢失的数字(C++)
每日一题:12. 丢失的数字(C++) 题目:给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。例:输入:nums = [3,0,1]输出:2解释:n = 3,因为有 3 个数字,所以所有的数字都在范围 [0,3] 内。2 是丢失的数字,因为它没有出现在 nums 中。解题思路(哈希):利用bool动态数组,长度为给出数组长度加上一([0,n]多出个数字)把数组中所有数字作为下标赋值为true,剩下的一个值为false的原创 2021-11-06 19:24:17 · 1169 阅读 · 0 评论 -
每日一题:11. 最长定差子序列(C++)
每日一题:11. 最长定差子序列(C++) 题目:给你一个整数数组 arr 和一个整数 difference,请你找出并返回 arr 中最长等差子序列的长度,该子序列中相邻元素之间的差等于 difference 。子序列 是指在不改变其余元素顺序的情况下,通过删除一些元素或不删除任何元素而从 arr 派生出来的序列。示例 1:输入:arr = [1,2,3,4], difference = 1输出:4解释:最长的等差子序列是 [1,2,3,4]。解题思路:根据取值范围,得到给出的数加上原创 2021-11-05 21:00:54 · 539 阅读 · 0 评论 -
每日一题:10. 有效的完全平方数(C++)
每日一题:10. 有效的完全平方数(C++) 题目:给定一个 正整数 num ,编写一个函数,如果 num 是一个完全平方数,则返回 true ,否则返回 false 。进阶:不要 使用任何内置的库函数,如 sqrt 。解题思路:利用for循环从3开始判断,直到给出的数一半时,如果该数不是完全平方数则返回false(如果该数是1或4则直接返回true,因为如果从1开始,作为循环判断条件1和4的一半取不到会导致判断失误,9之前的数除了1和4都不是完全平方数故从3开始省去判断)如果给出的数除以原创 2021-11-04 22:25:30 · 1080 阅读 · 0 评论 -
每日一题:9. 接雨水(C++)
每日一题:9. 接雨水(C++) 题目:给你一个 m x n 的矩阵,其中的值均为非负整数,代表二维高度图每个单元的高度,请计算图中形状最多能接多少体积的雨水。解题思路:对矩阵进行判别,如果不是行列大于等于三则舍去(因为形成不了凹陷接水)先将边界记录进优先栈(从低到高,头为最低值),并且把记录的位置进行标记(存水多少根据最低位置而定)将栈从低到高输出,判断当前输出位置四周是否能够存水并且是否已经被利用过,若能够存水且没被标记则将结果加上能存的大小,并且进行标记说明利用过,将当前位置与村水后高原创 2021-11-03 19:51:57 · 704 阅读 · 0 评论 -
每日一题:8. 删除链表中的节点(C++)
每日一题:8. 删除链表中的节点(C++) 题目:请编写一个函数,用于 删除单链表中某个特定节点 。在设计函数时需要注意,你无法访问链表的头节点 head ,只能直接访问 要被删除的节点 。题目数据保证需要删除的节点 不是末尾节点 。解题思路:将下一个节点的值赋值给当前要删除节点的值将下一个节点的下一个节点的地址赋值给当前要删除节点的指向下一个节点的指针变量以上两步相当于删除了当前要删除的节点(值和指向下一个节点的指针都改变了,等于要删除的节点变成了下一个节点且链表长度减1)(也省去了空原创 2021-11-02 18:48:04 · 539 阅读 · 2 评论 -
每日一题:7. 分糖果(C++)
每日一题:7. 分糖果(C++) 题目:Alice 有 n 枚糖,其中第 i 枚糖的类型为 candyType[i] 。Alice 注意到她的体重正在增长,所以前去拜访了一位医生。医生建议 Alice 要少摄入糖分,只吃掉她所有糖的 n / 2 即可(n 是一个偶数)。Alice 非常喜欢这些糖,她想要在遵循医生建议的情况下,尽可能吃到最多不同种类的糖。给你一个长度为 n 的整数数组 candyType ,返回: Alice 在仅吃掉 n / 2 枚糖的情况下,可以吃到糖的最多种类数。解题思路:原创 2021-11-02 18:45:20 · 1972 阅读 · 0 评论 -
每日一题:6. 键盘行(C++)
每日一题:6. 键盘行(C++) 题目:给你一个字符串数组 words ,只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。判断你所经过的路径是否相交。如果相交,返回 true ;否则,返回 false 。解题思路(1.哈希表):将所有的字母对应行数赋值遍历所有字符串,判断每个字符串的各个字符是否存在于同一行class Solution {public: vector<string> findWords(vector<string>&原创 2021-11-02 18:41:48 · 185 阅读 · 0 评论 -
每日一题:5. 只出现一次的数字(C++)
每日一题:5. 只出现一次的数字(C++) 题目:给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。判断你所经过的路径是否相交。如果相交,返回 true ;否则,返回 false 。解题思路(1.暴力法):找到各个不同的数字及他们出现的次数进行保存遍历保存的结果找到符合要求的数字class Solution {public: vector<int> singleNumber(v原创 2021-11-02 18:37:25 · 623 阅读 · 0 评论 -
每日一题:4.路径交叉(C++)
每日一题:4.路径交叉(C++) 题目:给你一个整数数组 distance 。从 X-Y 平面上的点 (0,0) 开始,先向北移动 distance[0] 米,然后向西移动 distance[1] 米,向南移动 distance[2] 米,向东移动 distance[3] 米,持续移动。也就是说,每次移动后你的方位会发生逆时针变化。判断你所经过的路径是否相交。如果相交,返回 true ;否则,返回 false 。解题思路:本题难点在于找到判断相交的方法在自己思索不出后参考了大佬的思路写了以下代原创 2021-11-02 18:32:13 · 206 阅读 · 0 评论 -
每日一题:3.重新排序得到 2 的幂(C++)
每日一题:3.重新排序得到 2 的幂(C++) 题目:给定正整数 N ,我们按任何顺序(包括原始顺序)将数字重新排序,注意其前导数字不能为零。如果我们可以通过上述方式得到 2 的幂,返回 true;否则,返回 false。解题思路:这题重点主要是怎么将数字打乱重新组合在一起暴力法也能做,但是效率不是很高(随后参透官方思路写了下面代码)解题步骤:高中数学里有排列组合这个知识点,把所有数字看成空格,往空格里填入能使用的各个数字得到所有的合法排列。先根据题目判断是否将0放在了第一个空格,是则舍去原创 2021-11-02 18:28:18 · 296 阅读 · 0 评论 -
每日一题:2.删除无效的括号(C++)
每日一题:1.下一个更大元素(C++) 题目:给你两个 没有重复元素 的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。请你找出 nums1 中每个元素在 nums2 中的下一个比其大的值。nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出 -1 。解题思路:采用for循环遍历子vector每次for循环利用两个while循环先找出当前遍历到的数字在主vector中的位置,再与后面的数字原创 2021-11-02 18:24:12 · 420 阅读 · 0 评论 -
每日一题:1.下一个更大元素(C++)
每日一题:1.下一个更大元素(C++) 题目:给你两个 没有重复元素 的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。请你找出 nums1 中每个元素在 nums2 中的下一个比其大的值。nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出 -1 。解题思路:采用for循环遍历子vector每次for循环利用两个while循环先找出当前遍历到的数字在主vector中的位置,再与后面的数字原创 2021-11-02 18:15:39 · 197 阅读 · 0 评论