算法编程学习
文章平均质量分 70
Leetcode、牛客竞赛
maruijiego
双非研究生
展开
-
极客大学数据结构和算法学习
文章目录一、数据结构分类1.一维数据结构2.二维数据结构3.特殊数据结构二、算法的分类1.基础算法2.高级算法一、数据结构分类1.一维数据结构基础:数组、链表高级:栈、队列、双端队列、集合、映射等2.二维数据结构基础:树、图高级:二叉查找树、平衡树、红黑树、堆、并查集、字典树等3.特殊数据结构位运算、布隆过滤器、LRU cache二、算法的分类1.基础算法branch:if-else、switchIteration: for、while递归2.高级算法搜索:深度优先搜索原创 2021-07-13 00:14:11 · 284 阅读 · 0 评论 -
Leetcode小白试炼(20201221 删除子数组的最大得分)
文章目录一、题目1. 题目描述2. 示例3. 题目解析二、个人解法1. 解法分析2. 代码3. 失败反思4. 改进改进点代码5. 再次失败反思三、官网高星解法1. 双指针集合法(1)解法分析(2)代码一、题目1. 题目描述给你一个正整数数组 nums ,请你从中删除一个含有 若干不同元素 的子数组。删除子数组的 得分 就是子数组各元素之 和 。返回 只删除一个子数组可获得的 最大得分 。如果数组 b 是数组 a 的一个连续子序列,即如果它等于 a[l],a[l+1],…,a[r] ,那么它就是 a原创 2020-12-21 16:59:48 · 231 阅读 · 0 评论 -
Leetcode小白试炼(20201211 基本计算器)
文章目录一、题目1. 题目描述2. 示例3. 题目解析二、个人解法1. 解法分析2. 失败反思三、官网高星解法1. 单栈递归法(1)解法分析(2)代码(3)算法分析(4)提交截图2. 后缀表达式一、题目1. 题目描述实现一个基本的计算器来计算一个简单的字符串表达式的值。字符串表达式可以包含左括号 ( ,右括号 ),加号 + ,减号 -,非负整数和空格 。说明:你可以假设所给定的表达式都是有效的。请不要使用内置的库函数 eval。2. 示例示例1:输入: “1 + 1”输出: 2示例原创 2020-12-11 14:34:29 · 199 阅读 · 0 评论 -
Leetcode小白试炼(20201210 基本计算器II)
文章目录一、题目1. 题目描述2. 示例3. 题目解析二、个人解法1. 解法分析2. 代码3. 失败反思4. 改进改进点代码5. 算法分析6. 提交截图(1)第一次失败截图(2)第二次失败截图(3)第三次成功截图一、题目1. 题目描述实现一个基本的计算器来计算一个简单的字符串表达式的值。字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 。 整数除法仅保留整数部分。2. 示例示例1:输入: “3+2*2”输出: 7示例2:输入: " 3/2 "输出: 1示例3:输入原创 2020-12-10 10:06:14 · 243 阅读 · 0 评论 -
牛客竞赛小白试炼(20201208 牛牛与后缀表达式)
文章目录一、题目1. 题目描述2. 示例3. 题目解析二、个人解法1. 解法分析2. 代码3. 算法分析4. 提交截图一、题目1. 题目描述给定牛牛一个后缀表达式s,计算它的结果,例如,1+1对应的后缀表达式为1#1#+,‘#’作为操作数的结束符号。其中,表达式中只含有‘+’、’-‘、’*‘三种运算,不包含除法。本题保证表达式一定合法,且计算过程和计算结果的绝对值一定不会超过101810 ^{18}1018备注:1≤表达式中的操作数≤1091 \leq 表达式中的操作数 \leq 10^91≤原创 2020-12-10 09:36:45 · 269 阅读 · 0 评论 -
Leetcode小白试炼(20201207 连接连续二进制数字)
文章目录一、题目1. 题目描述2. 示例3. 题目解析二、个人解法1. 解法分析2. 代码3. 失败反思4. 改进(1)改进点(2)代码5. 再次失败反思6. 算法分析7. 提交截图(1)第一次失败截图(2)第二次失败截图三、官网高星解法1.位运算法(1)解法分析(2)代码(3)算法分析(4)提交截图一、题目1. 题目描述给你一个整数 n ,请你将 1 到 n 的二进制表示连接起来,并返回连接结果对应的 十进制 数字对 109 + 7 取余的结果。提示:1≤n≤1051 \leq n \leq原创 2020-12-07 15:18:26 · 294 阅读 · 0 评论 -
牛客竞赛小白试炼(20201205 怕npy的牛牛)
文章目录一、题目1. 题目描述2. 示例3. 题目解析二、个人解法1. 代码2. 失败反思三、官网高星解法1. 双指针滑动窗口(1)解法分析(2)代码(3)算法分析(4)提交截图2. 分割法(1)解法分析(2)代码(3)算法分析(4) 提交截图一、题目1. 题目描述牛牛非常怕他的女朋友,怕到了走火入魔的程度,以至于每当他看到一个字符串同时含有n,p,y三个字母他都害怕的不行。现在有一个长度为m的只包含小写字母‘a’-‘z’的字符串x,牛牛想知道能令他不害怕的最长子串的长度是多少。(对于字符串”abc”原创 2020-12-05 14:59:05 · 139 阅读 · 0 评论 -
Leetcode小白试炼(20201203 字符串转换整数 atoi)
文章目录一、题目1. 题目描述2. 示例3. 题目解析二、解法1. 个人解法(1)代码(2)失败反思(3)提交截图第一次错误提交第二次错误提交一、题目1. 题目描述请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一原创 2020-12-03 10:47:56 · 124 阅读 · 0 评论 -
Leetcode小白试炼(20201201 验证回文串)
文章目录一、题目1. 题目描述2. 示例3. 题目解析二、解法1. 个人解法(1)代码(2)失败反思(3)改进a.改进点b.代码(4)提交截图第一次错误提交第二次正确提交一、题目1. 题目描述给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。2. 示例示例1:输入: “A man, a plan, a canal: Panama”输出: true示例2:输入: “race a car”输出: false示例原创 2020-12-01 10:18:44 · 142 阅读 · 0 评论 -
Leetcode小白试炼(20201130 有效的字母异位词)
文章目录一、题目1. 题目描述2. 示例3. 题目解析二、解法1. 个人解法(1)代码(2)失败反思(3)改进a.方案1:b.方案2:(4)算法分析(5)提交截图第一次错误提交截图第二次正确提交截图一、题目1. 题目描述给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。2. 示例示例1:输入: s = “anagram”, t = “nagaram”输出: true示例2:输入: s = “rat”, t = “car”输出: false示例3:输入:原创 2020-11-30 16:30:58 · 96 阅读 · 0 评论 -
Leetcode小白试炼(20201125 字符串中的第一个唯一字符)
文章目录一、题目1. 题目描述2. 示例3. 题目解析二、解法1. 个人解法(1)代码(2)解法分析(3)算法分析一、题目1. 题目描述给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。2. 示例示例1:s = “leetcode”返回 0示例2:s = “loveleetcode”返回 23. 题目解析没啥好解析的。。二、解法1. 个人解法(1)代码 public int firstUniqChar(String s) {原创 2020-11-25 10:42:25 · 81 阅读 · 0 评论 -
Leetcode小白试炼(20201124 旋转整数)
文章目录一、题目1. 题目描述2. 示例3. 题目解析二、解法1. 个人解法(1)代码(2)失败反思一、题目1. 题目描述给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。2. 示例示例1:输入: 123输出: 321示例 2:输入: 120输出: 213. 题目解析要求的是32位有符号整数,则其数值范围为[−231,231−1][−2^{31}, 2^{31} − 1][−231,231−1] 。请根据这个假设,如果反转后整数溢出那么就返回 0。但是函数的参原创 2020-11-24 10:12:50 · 165 阅读 · 0 评论 -
Leetcode小白试炼(20201112 旋转图像)
文章目录一、题目1. 题目描述2.示例3. 题目解析二、解法1. 个人解法(1)代码(2)失败反思一、题目1. 题目描述给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。2.示例示例1:给定 matrix =[[1,2,3],[4,5,6],[7,8,9]],原地旋转输入矩阵,使其变为:[[7,4,1],[8,5,2],[9,6,3]]示例2:原创 2020-11-12 11:19:46 · 195 阅读 · 1 评论 -
Leetcode小白试炼(20201008 有效数独)
文章目录一、题目1. 题目描述2. 示例3. 题目解析二、解法1. 个人解法(1)代码(2)失败反思(3)改进(4)算法分析(5)提交截图2. 官网高星解法(1)一、题目1. 题目描述判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。上图是一个部分填充的有效的数独。数独部分空格内已填入了数字,空白格用 ‘.’ 表示。原创 2020-10-08 09:57:26 · 110 阅读 · 0 评论 -
Leetcode小白试炼(20201005 两数之和)
文章目录一、题目1. 题目描述2. 示例3. 题目解析二、解法1. 个人解法(1)代码(2)失败反思(3)改进(4)解法分析(5)提交截图一、题目1. 题目描述给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。2. 示例示例1:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2原创 2020-10-05 10:22:32 · 101 阅读 · 0 评论 -
Leetcode小白试炼(20201003 移动零)
文章目录一、题目1. 题目描述2. 示例3. 题目解析二、解法1. 个人解法(1)代码(2)失败反思(3)改进(3)提交截图一、题目1. 题目描述给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。2. 示例示例1:输入: [0,1,0,3,12]输出: [1,3,12,0,0]示例2:输入: [0,0]输出: [0,0]3. 题目解析题目要求必须在原数组操作,不能额外原创 2020-10-03 10:35:48 · 126 阅读 · 0 评论 -
Leetcode小白试炼(20200929 加一)
文章目录一、题目1. 题目描述2. 示例3.题目分析二、解法1. 个人解法(1)代码(2)解法分析一、题目1. 题目描述给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。2. 示例示例1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 43原创 2020-09-30 11:06:01 · 79 阅读 · 0 评论 -
Leetcode小白试炼(20200925 数组交集)
文章目录一、题目1. 题目描述2. 示例3. 题目分析二、解法1.个人解法(1)代码(2)解法分析(3)解法缺点(4)提交截图一、题目1. 题目描述给定两个数组,编写一个函数来计算它们的交集。说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。我们可以不考虑输出结果的顺序。进阶:如果给定的数组已经排好序呢?你将如何优化你的算法?如果 nums1 的大小比 nums2 小很多,哪种方法更优?如果 nums2 的元素存储在磁盘上,内存是有限的,并且你不能一次加原创 2020-09-25 10:45:55 · 108 阅读 · 0 评论 -
Leetcode小白试炼(20200924 只出现一次的数字)
一、题目1. 题目描述给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?2.示例示例1:输入: [2,2,1]输出: 1示例2:输入: [4,1,2,1,2]输出: 43.题目分析本题目是找出数组中没有重复项的元素,要求有线性时间复杂度,那就不能使用排序法,另外还要求不使用额外空间,有些难度。二、解法1. 个人解法(1)代码/** * 集合法 * 虽原创 2020-09-24 10:25:21 · 98 阅读 · 0 评论 -
Leetcode小白试炼(20200922 存在重复元素)
文章目录一、题目1. 题目描述2. 示例3.题目分析二、解法1. 个人解法(1)代码(2)解法分析(3)解法缺点分析(4)提交截图(5)个人解法改进改进点分析:代码:提交截图:一、题目1. 题目描述给定一个整数数组,判断是否存在重复元素。如果任意一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。2. 示例示例1:输入: [1,2,3,1]输出: true示例2:输入: [1,2,3,4]输出: false3.题目分析本题目的是判断数组原创 2020-09-23 14:20:02 · 88 阅读 · 0 评论 -
Leetcode小白试炼(20200918 旋转数组)
文章目录一、题目1. 题目描述2. 示例3. 题目分析二、解法1. 个人解法(1)代码(2)解法分析(3)解法缺点分析(4)提交截图2. 官网高星解法(1)环状替代解法分析代码算法分析提交截图一、题目1. 题目描述给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。要求使用空间复杂度为O(1)。2. 示例示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转原创 2020-09-18 10:41:20 · 97 阅读 · 0 评论 -
Leetcode小白试炼(20200823 买卖股票的最佳时机 Ⅱ )
文章目录一、题目1. 题目描述2. 示例3. 题目分析二、解法1. 个人解法(1)做题反思2. 官网高星解法(1)暴力搜素(有递归,未完全看懂)一、题目1. 题目描述给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。2. 示例示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)原创 2020-08-23 12:11:58 · 198 阅读 · 0 评论 -
Leetcode小白试炼(20200816 删除排序数组中的重复项)
文章目录一、题目1. 题目描述2. 示例3. 题目分析二、解法1. 个人解法(1)代码(2)解法分析(3)解法缺点分析(4)提交截图2. 官网高星解法(1)代码(2)解法分析(3)提交截图一、题目1. 题目描述给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组 并在使用 O(1) 额外空间的条件下完成。2. 示例示例1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组原创 2020-08-16 11:05:08 · 130 阅读 · 0 评论