
算法详解
文章平均质量分 63
个人算法刷题学习记录,主要参考代码随想录,以及LeetCode刷题。
桐秋廿
这个作者很懒,什么都没留下…
展开
-
【算法详解】滑动窗口类问题统一模板
滑动窗口的算法技巧的思路非常简单,就是维护一个窗口,不断滑动,然后更新答案。这个算法技巧的时间复杂度是 O(N),比字符串暴力算法要高效得多。真正麻烦的不是算法的思路,而是各种细节问题。比如说如何向窗口中添加新元素,如何缩小窗口,在窗口滑动的哪个阶段更新结果。即便明白了这些细节,也容易出 bug,找 bug 还不知道怎么找。原创 2024-01-26 19:53:15 · 593 阅读 · 0 评论 -
【算法详解】力扣415.字符串相加
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。示例 1:输入:num1 = “11”, num2 = “123”输出:“134”原创 2024-01-21 20:09:33 · 670 阅读 · 0 评论 -
【算法详解】力扣69.x的平方根
给你一个非负整数 x ,计算并返回 x 的 算术平方根。由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去。注意:不允许使用任何内置指数函数和算符,例如或者x ** 0.5。原创 2024-01-20 20:59:39 · 1013 阅读 · 0 评论 -
【算法详解】力扣240.搜索二维矩阵II
编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。原创 2024-01-20 20:22:59 · 818 阅读 · 0 评论 -
【算法详解】力扣162.寻找峰值
二分查找的核心是当中间值满足条件时,就可以舍弃另一半,从而缩小范围。原创 2024-01-20 19:36:50 · 628 阅读 · 0 评论 -
【算法详解】力扣179.最大数
给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。示例 1:输入:nums = [10,2]输出:“210”原创 2024-01-18 20:43:05 · 639 阅读 · 0 评论 -
【算法详解】力扣56.合并区间
以数组intervals表示若干个区间的集合,其中单个区间为。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。示例 1:解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].原创 2024-01-18 20:12:38 · 554 阅读 · 0 评论 -
【算法详解】力扣136.只出现一次的数字
给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。示例 1 :输入:nums = [2,2,1]输出:1。原创 2024-01-18 17:19:38 · 1644 阅读 · 0 评论 -
【算法详解】力扣169.多数元素
给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入:nums = [3,2,3]输出:3示例 2:输入:nums = [2,2,1,1,1,2,2]输出:2。原创 2024-01-18 16:49:58 · 647 阅读 · 0 评论 -
【算法详解】力扣88.合并两个有序数组
给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n。原创 2024-01-17 20:02:30 · 493 阅读 · 0 评论 -
【算法详解】数组中的第K个最大元素(力扣215.数组中的第K个最大元素)
给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。你必须设计并实现时间复杂度为O(n)的算法解决此问题。原创 2024-01-15 19:57:44 · 514 阅读 · 1 评论 -
【算法详解】旋转图像(力扣48.旋转图像)
给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。原创 2024-01-15 17:07:05 · 621 阅读 · 0 评论 -
【算法详解】螺旋矩阵(力扣54.螺旋矩阵)
给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]原创 2024-01-15 16:16:10 · 521 阅读 · 0 评论 -
【算法详解】双指针移除元素(力扣27.移除元素)
在写代码过程中,经常遇到需要移除某个给定值的情况,这种需求当然可以通过双层for循环暴力求解,只需在循环的时候判断是否等于给定值,再将该值后面的元素全部前移即可。但是这种算法的时间复杂度为O(n2,不够高效,如果该算法外层再嵌套一个或多个for循环,那将极大地降低运算效率。对于这种需求,还可以使用双指针中的快慢指针解决问题,只需要用到一个for循环。原创 2023-05-05 20:42:27 · 343 阅读 · 0 评论 -
【算法详解】二分法(力扣 704.二分查找)
一句话概括:当需要从一个有序且无重复的数组中根据某一个给出的值找到其所在的下标,就可以用二分法来查找。数组有序且无重复只找一个元素例如[1,2,3,4,5,6],需要查找3的位置就可以使用二分查找,得到结果为2。用好二分查找最关键的地方就是方式一方式二的判断条件和区间处赋值理要一一对应,因为两者是相互联系,相互影响的,所以就需要两者统一,如果两者不统一,就会出现问题。所以循环条件和赋值问题必须统一,也就是循环不变量。【二分查找】详细图解代码随想录-二分查找。原创 2023-05-05 19:57:18 · 508 阅读 · 0 评论