技巧题
文章平均质量分 50
追光者2020
没有实力的愤怒毫无意义。
展开
-
LeetCode32. 最长有效括号
32. 最长有效括号给你一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。示例 1:输入:s = “(()”输出:2解释:最长有效括号子串是 “()”示例 2:输入:s = “)()())”输出:4解释:最长有效括号子串是 “()()”示例 3:输入:s = “”输出:0技巧题,思路别的地方用不到首先初始化start=-1;遇到左括号,将左括号对应的下标入栈如果遇到右括号,那么需要将栈顶元素弹出,弹出之后如果栈顶元素是空,那么说明最长的原创 2021-09-21 19:07:18 · 281 阅读 · 0 评论 -
leetcode 442. 数组中重复的数据
442. 数组中重复的数据给定一个整数数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次。找到所有出现两次的元素。你可以不用到任何额外空间并在O(n)时间复杂度内解决这个问题吗?示例:输入:[4,3,2,7,8,2,3,1]输出:[2,3]使用对应位置,当一个数出现的时候,那么对应位置的数置位相反数,如果当一个数为正数,那么表明该数在前面出现过。数组下标是从0开始的,数字范围是1开始的,下标设置的时候是减去一的,然后将对应位置的数取成相反数。cla原创 2021-09-21 14:52:12 · 325 阅读 · 0 评论 -
LeetCode 724. 寻找数组的中心下标(前缀和)
题目描述给你一个整数数组 nums ,请计算数组的 中心下标 。数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。如果中心下标位于数组最左端,那么左侧数之和视为 0 ,因为在下标的左侧不存在元素。这一点对于中心下标位于数组最右端同样适用。如果数组有多个中心下标,应该返回 最靠近左边 的那一个。如果数组不存在中心下标,返回 -1 。示例 1:输入:nums = [1, 7, 3, 6, 5, 6]输出:3解释:中心下标是 3 。左侧数之和 sum = nums[0原创 2021-08-23 14:47:59 · 203 阅读 · 0 评论 -
leetcode 73. 矩阵置零
题目描述给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。进阶:一个直观的解决方案是使用 O(mn) 的额外空间,但这并不是一个好的解决方案。一个简单的改进方案是使用 O(m + n) 的额外空间,但这仍然不是最好的解决方案。你能想出一个仅使用常量空间的解决方案吗?示例 1:输入:matrix = [[1,1,1],[1,0,1],[1,1,1]]输出:[[1,0,1],[0,0,0],[1,0,1]]示例 2:输入:m原创 2021-08-23 11:34:10 · 96 阅读 · 0 评论 -
leetcode 48. 旋转图像
题目描述给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[[7,4,1],[8,5,2],[9,6,3]]示例 2:输入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]输出:[[15,13,2原创 2021-08-20 20:34:27 · 63 阅读 · 0 评论 -
leetcode 31. 下一个排列 and LeetCode 670. 最大交换
题目描述实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列(即,组合出下一个更大的整数)。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须 原地 修改,只允许使用额外常数空间。示例 1:输入:nums = [1,2,3]输出:[1,3,2]示例 2:输入:nums = [3,2,1]输出:[1,2,3]示例 3:输入:nums = [1,1,5]输出:[1,5,1]示例 4:输入:nums = [1]输出:[1]除了原创 2021-08-20 20:09:40 · 63 阅读 · 0 评论 -
leetcode 234. 回文链表
题目描述请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true**进阶:**你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?一种方法是遍历链表,将链表中的所有值存入到数组中,然后再使用双指针判断数组中的元素。另外一种做法是模仿数组的做法,将链表的后半段翻转,然后两个指针一个从前遍历一个从后遍历确定链表的长度n,需要翻转的部分是后半部分half = n/2长度,翻转的次数是原创 2021-08-15 15:36:20 · 57 阅读 · 0 评论 -
leetcode 41. 缺失的第一个正数
题目描述给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。示例 1:输入:nums = [1,2,0]输出:3示例 2:输入:nums = [3,4,-1,1]输出:2示例 3:输入:nums = [7,8,9,11,12]输出:1基本思想是:将数与下标对应起来,将该数字放置到其应该放置的下标的位置。题目要求的是最小的正整数,因此负数和0均不需要考虑,当数字在0到n之间的话,且该数字不在对应的原创 2021-07-27 16:12:09 · 64 阅读 · 0 评论 -
leetcode 225. 用队列实现栈(技巧题)
题目描述请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。实现 MyStack 类:void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元素。int top() 返回栈顶元素。boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。注意:你只能使用队列的基本操作 —— 也就是 push to back、peek/pop from front、siz原创 2021-07-23 09:34:48 · 106 阅读 · 0 评论 -
LeetCode 1846. 减小和重新排列数组后的最大元素
题目描述给你一个正整数数组 arr 。请你对 arr 执行一些操作(也可以不进行任何操作),使得数组满足以下条件:arr 中 第一个 元素必须为 1 。任意相邻两个元素的差的绝对值 小于等于 1 ,也就是说,对于任意的 1 <= i < arr.length (数组下标从 0 开始),都满足 abs(arr[i] - arr[i - 1]) <= 1 。abs(x) 为 x 的绝对值。你可以执行以下 2 种操作任意次:减小 arr 中任意元素的值,使其变为一个 更小的正整数 。转载 2021-07-15 20:37:26 · 119 阅读 · 0 评论 -
leetcode 229. 求众数 II (摩尔投票法)
题目描述给定一个大小为 n 的整数数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。进阶:尝试设计时间复杂度为 O(n)、空间复杂度为 O(1)的算法解决此问题。示例 1:输入:[3,2,3]输出:[3]示例 2:输入:nums = [1]输出:[1]示例 3:输入:[1,1,1,3,3,2,2,2]输出:[1,2]提示:1 <= nums.length <= 5 * 104-109 <= nums[i] <= 109与leetcode 169 多数元原创 2021-07-09 11:05:13 · 136 阅读 · 0 评论 -
LeetCode 470. 用 Rand7() 实现 Rand10()
题目描述已有方法 rand7 可生成 1 到 7 范围内的均匀随机整数,试写一个方法 rand10 生成 1 到 10 范围内的均匀随机整数。不要使用系统的 Math.random() 方法。示例 1:输入: 1输出: [7]示例 2:输入: 2输出: [8,4]示例 3:输入: 3输出: [8,1,10]提示:rand7 已定义。传入参数: n 表示 rand10 的调用次数。调用尽可能少的rand7,使得生成的rand10每个数概率相等,调用一次rand7是不够的,需要调用两原创 2021-07-06 08:17:52 · 116 阅读 · 0 评论 -
LeetCode218 天际线问题(扫描线算法)
题目描述城市的天际线是从远处观看该城市中所有建筑物形成的轮廓的外部轮廓。给你所有建筑物的位置和高度,请返回由这些建筑物形成的 天际线 。每个建筑物的几何信息由数组 buildings 表示,其中三元组 buildings[i] = [lefti, righti, heighti] 表示:lefti 是第 i 座建筑物左边缘的 x 坐标。righti 是第 i 座建筑物右边缘的 x 坐标。heighti 是第 i 座建筑物的高度。天际线 应该表示为由 “关键点” 组成的列表,格式 [[x1,y原创 2021-06-17 15:39:40 · 1166 阅读 · 1 评论 -
LeetCode 202 快乐数(环的入口节点应用)
题目描述编写一个算法来判断一个数 n 是不是快乐数。「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。如果 n 是快乐数就返回 true ;不是,则返回 false 。示例 1:输入:19输出:true解释:12 + 92 = 8282 + 22 = 6862 + 82 = 10012 + 02 + 02 = 1示例 2:输入:n原创 2021-06-15 20:04:01 · 104 阅读 · 0 评论 -
LeetCode 204 计数质数(三种筛选质数方法)
题目描述统计所有小于非负整数 n 的质数的数量。示例 1:输入:n = 10输出:4解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。示例 2:输入:n = 0输出:0示例 3:输入:n = 1输出:0提示:0 <= n <= 5 * 106const int N=5e6+10;class Solution {public: int prime[N],cnt; bool st[N]; int countPrimes(i原创 2021-06-13 14:55:35 · 241 阅读 · 0 评论 -
LeetCode 326 3的幂(技巧题)
题目描述给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false 。整数 n 是 3 的幂次方需满足:存在整数 x 使得 n == 3x示例 1:输入:n = 27输出:true示例 2:输入:n = 0输出:false示例 3:输入:n = 9输出:true示例 4:输入:n = 45输出:false方法一:根据整数的范围可以知道,在整数范围内最大的3的幂次是319,该数字的质因数是3,32,33……因此如果输入的数字n可以被该原创 2021-06-13 11:21:21 · 210 阅读 · 0 评论 -
LeetCode 376 摆动排序 II(快速选择算法+三数排序)
给你一个整数数组 nums,将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]… 的顺序。你可以假设所有输入数组都可以得到满足题目要求的结果。示例 1:输入:nums = [1,5,1,1,6,4]输出:[1,6,1,5,1,4]解释:[1,4,1,5,1,6] 同样是符合题目要求的结果,可以被判题程序接受。示例 2:输入:nums = [1,3,2,2,3,1]输出:[2,3,1,3,1,2]三数排序可以看LeetCode 75颜色原创 2021-06-12 16:40:09 · 122 阅读 · 0 评论 -
LeetCode 75 颜色分类(荷兰国旗问题,三数排序)
题目描述给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。示例 1:输入:nums = [2,0,2,1,1,0]输出:[0,0,1,1,2,2]示例 2:输入:nums = [2,0,1]输出:[0,1,2]示例 3:输入:nums = [0]输出:[0]示例 4:输入:nums = [1]输出:[1]题解数轴上,起始位置 i=0,原创 2021-06-12 16:28:39 · 105 阅读 · 0 评论 -
LeetCode 315 计算右侧小于当前元素的个数(树状数组)
题目描述给定一个整数数组 nums,按要求返回一个新数组 counts。数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。示例:输入:nums = [5,2,6,1]输出:[2,1,1,0]解释:5 的右侧有 2 个更小的元素 (2 和 1)2 的右侧仅有 1 个更小的元素 (1)6 的右侧有 1 个更小的元素 (1)1 的右侧有 0 个更小的元素树状数组的作用:动态维护前缀和,前提是所有的数从1开始。树状数组tr[x]原创 2021-06-12 15:45:49 · 405 阅读 · 0 评论 -
LeetCode 347. 前 K 个高频元素(hash 以及 vector 下标的巧妙使用) and 692. 前K个高频单词
题目描述给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]用哈希表统计出所有数字出现的次数,然后根据计数排序的思想去将出现次数最大的几个数的次数加起来,找到次数是k的分界点,然后将所有大于等于k的数输出。class Solution {public: vector原创 2021-06-11 08:32:57 · 119 阅读 · 0 评论 -
LeetCode 125 验证回文串
题目描述给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: “A man, a plan, a canal: Panama”输出: true示例 2:输入: “race a car”输出: falseC++自带的函数 isalnum() 判断字符是字母或者数字。tolower() 转换为小写 toupper() 转换为大写。在该字符串中仅仅比较字母以及数字其余类型的字符不比较,因此遇到不是字母或原创 2021-06-08 09:55:07 · 44 阅读 · 0 评论 -
LeetCode 89 格雷编码
题目描述格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。即使有多个不同答案,你也只需要返回其中一种。格雷编码序列必须以 0 开头。示例 1:输入: 2输出: [0,1,3,2]解释:00 - 001 - 111 - 310 - 2对于给定的 n,其格雷编码序列并不唯一。例如,[0,2,3,1] 也是一个有效的格雷编码序列。00 - 010 - 211 - 301 - 1示例 2:输入:原创 2021-06-07 11:48:32 · 98 阅读 · 0 评论 -
LeetCode 9 回文数
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。示例 1:输入:x = 121输出:true示例 2:输入:x = -121输出:false解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入:x = 10输出:false解释:从右向左读, 为 01 。因此它不是一个回文数。示例 4:输原创 2021-06-04 16:45:55 · 38 阅读 · 0 评论 -
LeetCode 7 整数翻转
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。示例 1:输入:x = 123输出:321示例 2:输入:x = -123输出:-321示例 3:输入:x = 120输出:21直接获取数字的末尾位置的值,在获取的过程中转化。class Solution {public: int reverse(int原创 2021-06-04 16:14:28 · 94 阅读 · 0 评论 -
环形链表系列
题目描述给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。进阶:你能用 O(1)(即,常量)内存解决此问题吗?示例 1:输入:head = [3,2,0,-4]原创 2021-06-04 15:31:32 · 62 阅读 · 0 评论 -
LeetCode 61 循环链表
题目描述给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。示例 1:输入:head = [1,2,3,4,5], k = 2输出:[4,5,1,2,3]做过旋转数组的那个题之后,这样的旋转方式需要翻转三次,想想就复杂。下面说一种较为简单的方法,旋转之后链表的头节点以及尾节点发生了变化。因此需要找到旋转之后的头节点和尾节点即可。题目要求是将后边的k个节点移动到前面,因此新的尾节点就是在len-k-1 处,新的头节点在len-k处,旧的尾节点在计算链表长度时得出,千万原创 2021-06-04 11:42:25 · 103 阅读 · 0 评论 -
LeetCode 23 合并K个有序链表(链表,队列)
给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[1->4->5,1->3->4,2->6]将它们合并到一个有序链表中得到。1->1->2->3->4->4->5->6示例 2:输入:lists = []输出:[]示例 3原创 2021-06-04 10:44:59 · 511 阅读 · 0 评论 -
LeetCode 43 字符串相乘(类似于高精度乘法)
题目描述给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = “2”, num2 = “3”输出: “6”示例 2:输入: num1 = “123”, num2 = “456”输出: “56088”想一下普通计算两数乘积的方式,其中 括号里面表示的是此时参与运算的数是A数字的第i 位,B数字的第 j 位,竖着相加会加到 C的第 i+j 位置上去,此时还没有求解进位,进位的求解需要将本位数原创 2021-06-03 20:31:41 · 96 阅读 · 0 评论 -
螺旋矩阵系列(LeetCode56 and 59)
给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。示例:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]遍历的方向是右 下 左 上,定义移动矩阵dx , dy 分别代表4个方向,上右下左,因此一开始移动方向参数d=1,循环次数为矩阵元素的个数,需要使用一个bool矩阵来判断元素是否被遍历过,但是如何判断一个方向是否需要改变了呢?就是元素越界或者元素遍历过的时候就是改变方向的时候,改变原创 2021-06-03 18:50:01 · 109 阅读 · 0 评论 -
LeetCode 20 有效的括号 and 678. 有效的括号字符串
题目描述给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = “()”输出:true示例 2:输入:s = “()[]{}”输出:true示例 3:输入:s = “(]”输出:false示例 4:输入:s = “([)]”输出:false示例 5:输入:s = “{[]}”输出:true压栈顺序:遇到左括号压入右括号原创 2021-06-03 10:00:13 · 111 阅读 · 0 评论 -
day45:从1到n整数中1出现的次数(找规律)
问题描述:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。例如输入12,从1到12这些整数中包含“1”的数字有1,10,11和12,其中“1”一共出现了5次。样例输入: 12输出: 5参考链接class Solution {public: int numberOf1Between1AndN_Solution(int n) { if(!n) return 0; vector<int> number; whil原创 2020-07-10 18:43:06 · 141 阅读 · 0 评论 -
day26:57. 数字序列中某一位的数字
问题描述:数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从0开始计数)是5,第13位是1,第19位是4,等等。请写一个函数求任意位对应的数字。样例:输入:13输出:1借鉴代码注解class Solution {public: int digitAtIndex(int n) { long long i = 1, s = 9, base = 1;//i表示是几位数,s表示位数共有多少个,base表示位数的起始原创 2020-06-24 10:41:11 · 118 阅读 · 0 评论 -
构造乘积数组(前后缀分解)
题目描述给定一个数组A[0, 1, …, n-1],请构建一个数组B[0, 1, …, n-1],其中B中的元素B[i]=A[0]×A[1]×… ×A[i-1]×A[i+1]×…×A[n-1]。不能使用除法。样例输入:[1, 2, 3, 4, 5]输出:[120, 60, 40, 30, 24]思考题:能不能只使用常数空间?(除了输出的数组之外)本题目是乘积数组除了本身的数字以外所有数字的乘积,可以将数组以当前数字为划分点,前面的数组为一部分,后面的数组为另一部分,两部分做乘积即可。cla原创 2021-05-29 09:10:43 · 144 阅读 · 0 评论 -
day12:52. 数组中出现次数超过一半的数字
问题描述:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。假设数组非空,并且一定存在满足条件的数字。思考题:假设要求只能使用 O(n) 的时间和额外 O(1) 的空间,该怎么做呢?样例输入:[1,2,1,1,3]输出:1解题思路:使用两个常量,一个表示出现次数count,一个表示值val,当 count=0 的时候,val 等于当前所遍历到的数组的值,若后来的一个数与之前的数字相等,那么 count+1,否则count-1 ,直到将数组中的数字遍历完,即可输出 val ,va原创 2020-06-24 10:36:17 · 109 阅读 · 0 评论 -
day42:42. 栈的压入、弹出序列
问题描述:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。注意:若两个序列长度不等则视为并不是一个栈的压入、弹出序列。若两个序列都为空,则视为是一个栈的压入、弹出序列。样例*输入:[1,2,3,4,5] [4,5,3,2,1]*输出:true这道题目只是要求判断后面的序列是否原创 2020-07-07 15:51:40 · 1039 阅读 · 0 评论 -
day5:40. 顺时针打印矩阵
问题描述:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。样例输入:[ [1, 2, 3, 4],[5, 6, 7, 8],[9,10,11,12] ]输出:[1,2,3,4,8,12,11,10,9,5,6,7]数组的遍历顺序是右→下→左→上,定义表示 x 坐标与 y 坐标的数组,定义一个二维的vector,并且初始化为false,当矩阵中数字读过时,则标记为true,一开始从左向右读取数组matrix,当读到越过m时,d的值需要改变,代表移动的方向,更新此时 x,y原创 2020-06-24 10:28:45 · 89 阅读 · 0 评论 -
字符串中第一个只出现一次的字符
题目描述在字符串中找出第一个只出现一次的字符。如输入"abaccdeff",则输出b。如果字符串中不存在只出现一次的字符,返回 # 字符。样例:输入:“abaccdeff”输出:‘b’该题与字符流中第一个只出现一次的字符串是不一样的,本题目字符串是提前确定好的,而链接中的题目字符串是不确定的。使用hash遍历字符串中的数字,然后取第一个个数等于1的字符返回。class Solution {public: char firstNotRepeatingChar(string s) {原创 2021-05-27 20:57:59 · 272 阅读 · 0 评论 -
扑克牌的顺子(模拟)
题目描述从扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这 5 张牌是不是连续的。2∼10 为数字本身,A 为 1,J 为 11,Q 为 12,K 为 13,大小王可以看做任意数字。为了方便,大小王均以 0 来表示,并且假设这副牌中大小王均有两张。样例1输入:[8,9,10,11,12]输出:true样例2输入:[0,8,9,11,12]输出:trueclass Solution {public: bool isContinuous( vector<int> numb原创 2021-05-27 20:30:37 · 84 阅读 · 0 评论 -
在O(1)时间删除链表结点
题目描述给定单向链表的一个节点指针,定义一个函数在O(1)时间删除该结点。假设链表一定存在,并且该节点一定不是尾节点。样例输入:链表 1->4->6->8删掉节点:第2个节点即6(头节点为第0个节点)输出:新链表 1->4->8本题目没有告知节点的上一个节点是啥,因此取巧的办法是将下一个节点的值赋值到该节点,并且将下一个节点删除,依次来间接地完成对本节点的删除操作。/** * Definition for singly-linked list. * stru原创 2021-05-27 10:22:26 · 78 阅读 · 0 评论 -
LeetCode 14 最长公共前缀(招商银行提前批面试题)
题目描述编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入:strs = [“flower”,“flow”,“flight”]输出:“fl”示例 2:输入:strs = [“dog”,“racecar”,“car”]输出:""解释:输入不存在公共前缀。纵向比较法,将字符串按照纵列比较,如果一纵列字符均相等,那么该字符属于公共前缀的一部分,直到比较到不相等的字符为止或者其中一个字符串已经结束为止,就类似于短板效应。当然字典树也可以做,不过代原创 2021-05-27 09:42:23 · 108 阅读 · 0 评论