- 博客(19)
- 资源 (1)
- 收藏
- 关注
原创 leetcode16:最接近的三数之和
固定一个元素 nums[i],然后使用两个指针 left 和 right 分别指向 i 的下一个元素和数组的末尾。找出 nums 中的三个整数,使得它们的和与 target 最接近。首先对数组进行排序,这样可以方便处理元素之间的顺序关系,并在需要时快速跳过重复的元素。给定数组 nums = [-1, 2, 1, -4], 和 target = 1。了避免重复计算,当移动指针时,如果新指针指向的元素与前一元素相同,则跳过该元素。在遍历过程中,不断更新记录与 target 的差值最小的三数之和。
2024-08-29 15:53:24
467
原创 leectcode15:三数之和
给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0?找出所有满足条件且不重复的三元组。之后使用三个指针,i,left,right。其中 i 从数组的起始位置开始遍历,left 初始化为 i+1,right 初始化为数组末尾。给定数组 nums = [-1, 0, 1, 2, -1, -4],首先对数组进行排序,这样可以方便处理重复元素和减少搜索范围。答案中不可以包含重复的三元组。数组中的数字可以是小数或负数。
2024-08-29 15:45:17
416
原创 leetcode14:最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。解释:输入不存在公共前缀。
2024-08-28 09:05:55
828
原创 leetcode13:罗马数字转整数
从左到右遍历罗马数字字符串,对于每个字符,将其转换为对应的整数值。由于存在相减的情况(如 IV),因此需要比较当前字符的整数值与前一个字符的整数值。如果当前字符的整数值大于前一个字符的整数值,则从结果中减去前一个字符的整数值(这实际上是在进行相减操作,如 IV 中的 I)。如果当前字符的整数值小于或等于前一个字符的整数值,则直接将前一个字符的整数值加到结果上。罗马数字包含七个不同的符号:I,V,X,L,C,D 和 M。I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
2024-08-28 08:51:04
317
原创 leetcode12:整数转罗马数字
从大到小遍历:然后,从最大的罗马数字符号(M)开始,检查该符号在整数中能够出现的次数,并将其添加到结果字符串中。通常情况下,罗马数字中小的数字在大的数字的右边。处理特殊情况:对于 4、9、40、90、400 和 900 这些特殊情况,需要特别处理,因为它们不能通过简单的重复符号来表示。迭代减少整数:每次放置一个罗马数字符号后,从整数中减去对应的值,然后迭代处理剩余的整数。罗马数字包含七个不同的符号:I,V,X,L,C,D 和 M。I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
2024-08-27 17:28:31
278
原创 leetcode11:盛最多水的容器
这个问题可以使用双指针法来解决,思路是从容器的两端开始,计算当前容器的面积,然后移动高度较低的那一边的指针,直至两个指针重合。这是因为如果移动高度较高的那一边的指针,容器的宽度会减小,而容器高度(由较小的那个指针决定)不会增加,所以面积只可能减小或保持不变。而移动高度较低的那一边的指针,则有可能增加容器的高度,从而增加面积。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i])。解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。说明:你不能倾斜容器。
2024-08-27 17:04:27
256
原创 leetcode10:正则表达式匹配
如果 p[j-1] 不是 ‘*’,则 dp[i][j] 的值取决于 s[i-1] 是否等于 p[j-1] 或 p[j-1] 是否为 ‘.’,以及 dp[i-1][j-1] 的值。使用 ‘*’ 匹配一个或多个字符,此时 dp[i][j] 的值取决于 s[i-1] 是否等于 p[j-2] 或 p[j-2] 是否为 ‘.’,以及 dp[i-1][j] 的值。使用 ‘*’ 匹配零个字符,此时 dp[i][j] 的值取决于 dp[i][j-2]。解释:“.*” 表示可匹配零个或多个(‘*’)任意字符(‘.’)。
2024-08-27 16:34:15
337
原创 leetcode9:回文数
反转一半数字:为了避免溢出,我们不需要反转整个数字。相反,我们可以只反转数字的一半,并将其与原始数字的后半部分进行比较。排除非正整数:由于负数或末尾为零的非零整数(如10)不可能是回文数,我们可以首先检查这些条件。解释: 从左向右读, 为 -121。从右向左读, 为 121-。因此它不是一个回文数。假设环境只能存储得下 32 位的有符号整数,其数值范围是 [−231, 231 − 1]。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。解释: 从右向左读, 为 01。
2024-08-27 16:14:45
172
原创 leetcode8:字符串转换整数 (atoi)
转换数字:接下来,遍历字符串的剩余部分,将每个数字字符转换为对应的整数,并累加到结果中。可以通过字符与字符 ‘0’ 的 ASCII 码之差来获得数字值(例如,‘1’.charCodeAt(0) - ‘0’.charCodeAt(0) === 1)。函数需要去除字符串中的空格,并检查下一个字符(假设该字符不是空格)是否为正号、负号或者数字。处理溢出:在累加过程中,检查结果是否超过了 32 位有符号整数的范围。实现一个函数 myAtoi(string s),该函数将字符串转换成一个整数(32位有符号整数)。
2024-08-27 15:50:50
290
原创 leetcode7:整数反转
具体步骤是,每次取出整数的最后一位(可以通过对 10 取余得到),然后将其加到反转后的整数上(注意要乘以 10,因为每次循环都在处理更高一位的数字)。同时,为了避免溢出,需要在每次加法操作之前检查反转后的整数是否超过了 32 位有符号整数的范围。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。使用数学运算来逐个反转整数的每一位。这种方法可以在反转的过程中直接判断并处理整数溢出的情况。给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
2024-08-27 15:26:26
284
原创 leetcode6:Z字形变换
尽管使用两个栈(或数组作为栈的替代)来交替存储每一行的字符是一种方法,但出于空间复杂度和实现简洁性的考虑,更常见的是通过计算索引的方式来决定每个字符在结果字符串中的位置。因此,在计算每个字符的目标索引时,已经隐式地考虑了这一点。由于结果字符串在初始时可能不包含足够的空间来存储所有字符,因此在实际操作中,通常会使用一个足够大的数组或动态字符串来构建结果,并在最后返回其作为结果字符串。具体实现时,可以遍历输入字符串的每个字符,并根据其在Z字形路径上的位置计算出在结果字符串中的索引,然后将字符放置在该索引位置。
2024-08-27 13:50:54
334
原创 leetcode5:最长回文子串
使用一个二维数组 dp[i][j] 来表示子串 s[i…状态转移方程是 dp[i][j] = (s[i] == s[j]) && (j - i < 2 || dp[i+1][j-1])。遍历字符串中的每个字符或每对相邻字符(一个中心可能是单个字符,也可能是两个相邻字符),尝试将中心向两边扩展,检查扩展后的子串是否是回文。这种方法的时间复杂度也是 O(n^2),但由于它避免了额外的空间开销(除了几个变量外),因此在实际应用中往往表现良好。这种方法的时间复杂度是 O(n^3),其中 n 是字符串的长度。
2024-08-27 09:34:47
257
原创 leetcode4:两个有序数组的中位数
为了满足时间复杂度的要求,可以采用二分查找的思想。主要思路是将问题转化为在两个有序数组中寻找第k小的数,其中k为(m+n)/2(当数组总长度为奇数时)或(m+n)/2和(m+n)/2+1(当数组总长度为偶数时,需要找两个数来求平均值)。最简单直观的方法是先将两个数组合并成一个有序数组,然后直接根据合并后数组的长度是奇数还是偶数来找到中位数,这种方法的时间复杂度为O(m+n)。给定两个有序数组nums1和nums2,请找出这两个数组的中位数。
2024-08-27 09:15:46
849
原创 leetcode3:无重复字符的最长子串
这是解决该问题的有效方法,通过维护一个滑动窗口和一个哈希集合(如HashSet)来实现。窗口中的字符是当前考虑的不重复字符序列,哈希集合用于记录窗口中字符的存在性。遍历字符串的所有可能子串,并检查每个子串是否包含重复字符。然而,这种方法的时间复杂度为 O(n^3),在字符串较长时效率非常低。这个问题可以通过多种方法解决,包括但不限于暴力法、滑动窗口法等。输入一个字符串 s,找出 s 中不包含重复字符的最长子串的长度。解释:无重复字符的最长子串是 “abc”,其长度为 3。输入:“abcabcbb”
2024-08-27 08:50:12
932
原创 Leetcode2——两数相加(Add Two Numbers)
在每一步中,取出l1和l2当前节点的值(如果某个链表已经遍历完,则将其值视为0),将它们与进位变量carry相加,得到当前位的和。然后,更新进位变量carry为当前和除以10的商,将当前和的个位数创建为一个新节点,并连接到结果链表的末尾。给你两个非空的链表,表示两个非负的整数。解题策略是采用类似于手算加法的进位机制,遍历两个链表,处理每一位的加法和进位,最后返回新的链表表示结果。3.处理进位:在遍历完两个链表后,如果进位变量carry仍然大于0,则需要在结果链表的末尾再添加一个值为carry的新节点。
2024-08-26 10:17:40
305
原创 Leetcode1——两数之和(Two Sum)
LeetCode 第一题是一道非常经典的题目,通常被称为“两数之和”(Two Sum)。题目描述如下:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值 target 的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
2024-08-26 10:01:55
681
原创 如何从零开始构建webpack4生产环境
Webpack 依赖于一个管理其所有设置的配置文件:webpack.config.js。-D 将其保存到 package.json 中的devDependencies中。要启用生产模式,只需要设置mode选项,生产模式下打包会删除死代码。然后在package.json中添加如下配置。安装clean-webpack-plugin。更改package.json里的控制台命令。假设基本项目结构如下。
2024-08-22 11:19:13
342
【课程设计/期末作业】绿色宽屏宠物乐园网站模板
2024-08-28
红黑设计IT电子产品商城网站模板,宽屏响应式布局,纯html+css+js,无后台
2024-08-28
黑色新闻科技博客blog整站模板,宽屏响应式布局,纯Html+css+js,无后台
2024-08-28
中华美食城网站模板,餐饮类网站模板,响应式布局,纯Html+css+js,无后台
2024-08-28
精品电子商城网站模板,宽屏大图响应式布局,无后台,纯html+css+js
2024-08-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人