- 博客(15)
- 收藏
- 关注
原创 刷题笔记:只出现一次的数字
只出现一次的数字题目经验 题目 https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/x21ib6/ 经验 使用异或运算: 使用异或运算,将所有值进行异或 异或运算,相异为真,相同为假,所以 a^a = 0 ;0^a = a 因为异或运算 满足交换律 aba = aab = b 所以数组经过异或运算,单独的值就剩下了。 很妙。 ...
2022-03-15 16:30:12
216
原创 力扣刷题学习495. 提莫攻击(C++)
题目描述 自己看 解答 首先我可以知道当没有中毒时,如果给上毒,那么此时中毒时间直接增加duration,同时更新中毒结束时间ex. 如果被上毒时已经中毒,则此时中毒时间将加上time[i]+duration-ex,同时更新ex. class Solution { public: int findPoisonedDuration(vector<int>& timeSeries, int duration) { int ans = 0; int ex
2021-11-10 15:37:44
4832
原创 力扣刷题学习299. 猜数字游戏(C++)
题目描述 题目描述较绕,直接看原文。 解答 首先公牛数量好算,只要看对应位置的值是否相同。 而对于奶牛数量,是指可以通过改变位置后变成公牛的值,那么就是指两个数组中相同值的数量的最小值,也就是说当有多个相同值时,只有对应最少量的可以变成公牛。 这里可以用计数数组来分别统计对应值的数量,然后取两个数组对应位置最小的值。 class Solution { public: string getHint(string secret, string guess) { int bulls = 0
2021-11-08 09:57:33
3348
原创 力扣刷题学习598. 范围求和 II(C++)
题目描述 给定一个初始元素全部为 0,大小为 m*n 的矩阵 M 以及在 M 上的一系列更新操作。 操作用二维数组表示,其中的每个操作用一个含有两个正整数 a 和 b 的数组表示,含义是将所有符合 0 <= i < a 以及 0 <= j < b 的元素 M[i][j] 的值都增加 1。 在执行给定的一系列操作后,你需要返回矩阵中含有最大整数的元素个数。 示例 1: 输入: m = 3, n = 3 operations = [[2,2],[3,3]] 输出: 4 解释: 初始状态
2021-11-07 10:13:44
833
原创 力扣刷题学习268. 丢失的数字(C++)
题目描述 给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。 测试用例 示例一: 输入:nums = [3,0,1] 输出:2 解释:n = 3,因为有 3 个数字,所以所有的数字都在范围 [0,3] 内。2 是丢失的数字,因为它没有出现在 nums 中。 示例二: 输入:nums = [0,1] 输出:2 解释:n = 2,因为有 2 个数字,所以所有的数字都在范围 [0,2] 内。2 是丢失的数字,因为它没有出现在 nums 中。
2021-11-06 16:12:56
465
原创 力扣刷题学习1218. 最长定差子序列(C++)
题目描述 给你一个整数数组 arr 和一个整数 difference,请你找出并返回 arr 中最长等差子序列的长度,该子序列中相邻元素之间的差等于 difference 。 子序列 是指在不改变其余元素顺序的情况下,通过删除一些元素或不删除任何元素而从 arr 派生出来的序列。 测试用例 示例一: 输入:arr = [1,2,3,4], difference = 1 输出:4 解释:最长的等差子序列是 [1,2,3,4]。 示例 二: 输入:arr = [1,3,5,7], difference =
2021-11-05 15:54:15
176
原创 利扣刷题学习367. 有效的完全平方数(C++)
题目描述 给定一个 正整数 num ,编写一个函数,如果 num 是一个完全平方数,则返回 true ,否则返回 false 。 进阶:不要 使用任何内置的库函数,如 sqrt 。 测试用例 示例 1: 输入:num = 16 输出:true 示例2: 输入:num = 14 输出:false 提示: 1 <= num <= 2^31 - 1 解答 题目要求不能使用自带的库函数,那么我们首先分析如何得到平方数,当x处于1-num之间时,如果xx等于num,那x便是完全平方数。 自然
2021-11-04 10:33:04
435
原创 力扣刷题学习407. 接雨水 II(C++)
题目描述 直接上原链接看题吧 解答 首先可以明确能接雨水的方块特点 不能是最外层方块 周围一圈方块高度都比它高 这里我们假设逐个方块注水,那么要从外往里逐个检查,因为最外层最低的方块决定了当前圈层的最低高度。 首先我们每次遍历一遍当前最外层的方块,选择当前圈中最低的方块检查其周围的方块是否是访问过的, 如果未访问过且高度比其低,则将其注水,且更新高度为注水后的高度,如此遍历完整个数组。 typedef pair<int,int> pii; class Solution { public:
2021-11-03 16:32:55
241
原创 力扣刷题学习237. 删除链表中的节点
题目描述 请编写一个函数,用于 删除单链表中某个特定节点 。在设计函数时需要注意,你无法访问链表的头节点 head ,只能直接访问要被删除的节点 。 题目数据保证需要删除的节点 不是末尾节点 。 测试用例 示例一: 输入:head = [4,5,1,9], node = 5 输出:[4,1,9] 解释:指定链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9 示例二: 输入:head = [4,5,1,9], node = 1 输出:[4,5,9]
2021-11-02 09:45:01
197
原创 力扣刷题学习575. 分糖果(C++)
题目描述 给定一个偶数长度的数组,其中不同的数字代表着不同种类的糖果,每一个数字代表一个糖果。你需要把这些糖果平均分给一个弟弟和一个妹妹。返回妹妹可以获得的最大糖果的种类数。 测试用例 示例一: 输入: candies = [1,1,2,2,3,3] 输出: 3 示例二: 输入: candies = [1,1,2,3] 输出: 2 提示: 数组的长度为[2, 10,000],并且确定为偶数。 数组中数字的大小在范围[-100,000, 100,000]内。 解答 思路一: 首先因为是偶数个糖果,
2021-11-01 09:29:11
357
原创 力扣刷题学习500. 键盘行(C++)
题目描述 给你一个字符串数组 words ,只返回可以使用在 美式键盘 同一行的字母打印出来的单词。 美式键盘 中: 第一行由字符 “qwertyuiop” 组成。 第二行由字符 “asdfghjkl” 组成。 第三行由字符 “zxcvbnm” 组成。 测试用例 示例一: 输入:words = [“Hello”,“Alaska”,“Dad”,“Peace”] 输出:[“Alaska”,“Dad”] 示例二: 输入:words = [“omk”] 输出:[] 示例三: 输入:words = [“ad
2021-10-31 15:02:42
246
原创 力扣刷题学习260. 只出现一次的数字 III(C++)
题目描述 给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。 进阶:你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现? 测试用例 实例1: 输入:nums = [1,2,1,3,2,5] 输出:[3,5] 解释:[5, 3] 也是有效的答案。 实例2: 输入:nums = [-1,0] 输出:[-1,0] 实例3: 输入:nums = [0,1] 输出:[1,0] 提示 2 <=
2021-10-30 10:01:40
128
原创 力扣刷题学习335. 路径交叉(C++)
题目描述 给你一个整数数组 distance 。 从 X-Y 平面上的点 (0,0) 开始,先向北移动 distance[0] 米,然后向西移动 distance[1] 米,向南移动 distance[2] 米,向东移动 distance[3] 米,持续移动。也就是说,每次移动后你的方位会发生逆时针变化。 判断你所经过的路径是否相交。如果相交,返回 true ;否则,返回 false 。 测试用例 示例 1: 输入:distance = [2,1,1,2] 输出:true 示例2: 输入:distan
2021-10-29 15:45:32
306
原创 力扣刷题学习869. 重新排序得到 2 的幂(C++)
题目描述 给定正整数 N ,我们按任何顺序(包括原始顺序)将数字重新排序,注意其前导数字不能为零。 如果我们可以通过上述方式得到 2 的幂,返回 true;否则,返回 false。 测试用例 示例 1: 输入:1 输出:true 示例 2: 输入:10 输出:false 示例 3: 输入:16 输出:true 提示: 1 <= N <= 10^9 解题思路 此处有个重要知识点,即:如果两个十进制数从大到小重新排序后,其结果相同,则对于它们能否排列出2的幂,答案是相同的。 由题意可知,
2021-10-28 15:18:12
245
原创 力扣刷题学习301. 删除无效的括号(C++)
问题描述 给你一个由若干括号和字母组成的字符串 s,删除最小数量的无效括号,使得输入的字符串有效。 返回所有可能的结果。答案可以按 任意顺序 返回。 测试用例 示例 1: 输入:s = “()())()” 输出:["(())()","()()()"] 示例 2: 输入:s = “(a)())()” 输出:["(a())()","(a)()()"] 示例 3: 输入:s = “)(” 输出:[""] 解法 第一天打卡就是困难题,直接愣住。5分钟后没有思路,选择直接看答案。 思路:回溯 + 剪枝 题
2021-10-27 18:23:08
213
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人