
初级算法
包含数组、字符串、链表、树、排序和搜索、动态规划、设计问题等,还包括其他一些经典算法,如杨辉三角、有效括号等。这些算法都属于入门级别的算法,题目来自力扣。
Annimi@
这个作者很懒,什么都没留下…
展开
-
回文链表(链表)
给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true;否则,返回 false。示例 1:输入:head = [1,2,2,1]输出:true示例 2:输入:head = [1,2]输出:false提示:链表中节点数目在范围[1, 10^5] 内。原创 2023-04-07 22:28:29 · 155 阅读 · 0 评论 -
最长公共前缀(字符串)
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入:strs = [“flower”,“flow”,“flight”]输出:“fl”示例 2:输入:strs = [“dog”,“racecar”,“car”]输出:“”解释:输入不存在公共前缀。提示:strs[i] 仅由小写英文字母组成。原创 2023-04-07 17:24:41 · 173 阅读 · 0 评论 -
外观数列(字符串)
给定一个正整数 n ,输出外观数列的第 n 项。「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。你可以将其视作是由递归公式定义的数字字符串序列:countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。第一项是数字 1描述前一项,这个数是 1 即 “ 一 个 1 ”,记作 “11”描述前一项,这个数是 11 即 “ 二 个 1 ” ,记作 “21”原创 2023-04-07 17:16:34 · 216 阅读 · 0 评论 -
实现 strStr()(字符串)
给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1。示例 1:输入:haystack = “sadbutsad”, needle = “sad”输出:0解释:“sad” 在下标 0 和 6 处匹配。第一个匹配项的下标是 0 ,所以返回 0。原创 2023-04-07 16:47:40 · 81 阅读 · 0 评论 -
字符串转换整数(atoi)
请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。函数 myAtoi(string s) 的算法如下:读入字符串并丢弃无用的前导空格检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。确定最终结果是负数还是正数。如果两者都不存在,则假定结果为正。读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。原创 2023-04-07 11:48:48 · 185 阅读 · 0 评论 -
验证回文串(字符串)
如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个。字母和数字都属于字母数字字符。给你一个字符串 s,如果它是,返回 true;否则,返回 false。示例 1:输入: s = “A man, a plan, a canal: Panama”输出:true解释:“amanaplanacanalpanama” 是回文串。示例 2:输入:s = “race a car”输出:false。原创 2023-04-07 11:26:41 · 408 阅读 · 0 评论 -
有效的字母异位词(字符串)
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。示例 1:输入: s = “anagram”, t = “nagaram”输出: true示例 2:输入: s = “rat”, t = “car”输出: false提示:s 和 t 仅包含小写字母。原创 2023-04-07 10:46:50 · 757 阅读 · 0 评论 -
字符串中的第一个唯一字符(字符串)
给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。示例 1:输入: s = “leetcode”输出: 0示例 2:输入: s = “loveleetcode”输出: 2示例 3:输入: s = “aabb”输出: -1提示:s 只包含小写字母。原创 2023-04-07 09:58:53 · 759 阅读 · 0 评论 -
整数反转(字符串)
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。原创 2023-04-06 23:05:15 · 775 阅读 · 0 评论 -
反转字符串(字符串)
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须、使用 O(1) 的额外空间解决这一问题。示例 1:输入:s = [“h”,“e”,“l”,“l”,“o”]输出:[“o”,“l”,“l”,“e”,“h”]示例 2:输入:s = [“H”,“a”,“n”,“n”,“a”,“h”]输出:[“h”,“a”,“n”,“n”,“a”,“H”]提示:s[i] 都是 ASCII 码表中的可打印字符。原创 2023-04-06 22:36:20 · 636 阅读 · 0 评论 -
旋转图像(数组)
给定一个 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]]原创 2023-04-06 22:23:00 · 741 阅读 · 0 评论 -
有效的数独(数组)
请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)注意:一个有效的数独(部分已被填充)不一定是可解的。只需要根据以上规则,验证已经填入的数字是否有效即可。空白格用 ‘.’ 表示。原创 2023-04-06 18:25:44 · 924 阅读 · 0 评论 -
两数之和(数组)
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出target 的那整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。示例 2:输入:nums = [3,2,4], target = 6。原创 2023-04-06 15:56:29 · 350 阅读 · 0 评论 -
移动零(数组)
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。原创 2023-04-06 10:02:00 · 547 阅读 · 0 评论 -
加一(数组)
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。:[1,2,4]:输入数组表示数字 123。:[4,3,2,2]:输入数组表示数字 4321。:[1]原创 2023-02-24 21:52:31 · 212 阅读 · 0 评论 -
两个数组的交集(数组)
给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。原创 2023-01-13 21:10:43 · 157 阅读 · 0 评论 -
只出现一次的数字(数组)
给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。:1。原创 2023-01-13 11:44:45 · 96 阅读 · 0 评论 -
存在重复元素
给你一个整数数组 nums。如果任一值在数组中出现 至少两次 ,返回 true;如果数组中每个元素互不相同,返回 false。:true。原创 2023-01-13 11:07:46 · 65 阅读 · 0 评论 -
买卖股票的最佳时机II(数组)
给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。在每一天,你可以决定是否购买和或出售股票。你在任何时候只能持有股票。你也可以先购买,然后在出售。返回你能获得的利润。7在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3。原创 2023-01-09 10:52:07 · 411 阅读 · 0 评论 -
旋转数组(数组)
给你一个数组,将数组中的元素向右轮转** k 个位置**,其中 k 是非负数。原创 2023-01-12 17:30:59 · 76 阅读 · 0 评论 -
删除排序数组中的重复项(数组)
由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。函数应该返回新的长度 5 , 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。数组是排好序的,相同的肯定是挨在一起的,所以我们要遍历所有数组,把后面相同的都删掉。,返回删除后数组的新长度。的数组 nums ,请你。原创 2022-12-29 20:08:06 · 98 阅读 · 0 评论