算法与数据结构
文章平均质量分 80
算法与数据结构知识总结与分享
sunshine2285
爱代码,爱生活!
展开
-
【每日一题】LeetCode - 动态规划题目(2)
70. 爬楼梯本题是很经典的动态入门的规划题目,可以从递归问题入手,分析重叠子问题,再优化递归解法为带备忘录算法的递归解法,再进一步将递归自顶向下的解题思路转化为自底向上,最终实现动态规划的算法。原创 2021-02-28 11:25:57 · 164 阅读 · 0 评论 -
【每日一题】LeetCode - 动态规划题目(1)
剑指 Offer 42. 连续子数组的最大和class Solution { public int maxSubArray(int[] nums) { int max = nums[0]; int sum = nums[0]; for (int i = 1; i < nums.length; ++i) { if (sum > 0) { sum += nums[i];原创 2021-02-27 21:53:03 · 158 阅读 · 0 评论 -
【每日一题】PAT(Basic Level) 1005 继续(3n+1)猜想 (25分)
题目来源 PAT(Basic Level) 1005,一起学习一起进步????,如果内容对您有帮助欢迎点赞~~题目描述卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如对 n=3 进行验证的时候,我们需要计算 3、5、8、4、2、1,则当我们对 n=5、8、4、2...原创 2020-03-27 15:19:17 · 143 阅读 · 0 评论 -
【每日一题】PAT(Basic Level) 1002 写出这个数 (20分)
题目来源 PAT(Basic Level) 1002,一起学习一起进步????,如果内容对您有帮助欢迎点赞~~题目描述读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。输入格式:每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10100。输出格式:在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后...原创 2020-03-27 09:09:50 · 145 阅读 · 0 评论 -
【每日一题】PAT(Basic Level) 1003 我要通过! (20分)
题目来源 PAT(Basic Level) 1003,一起学习一起进步????,如果内容对您有帮助欢迎点赞~~题目描述“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。得到“答案正确”的条件是:字符串中必须仅有 P、 A、 T这三种字符,不可以包含其它字...原创 2020-03-27 09:00:09 · 427 阅读 · 0 评论 -
【每日一题】Leetcode - 1160. Find Words That Can Be Formed by Characters(拼写单词)
题目来源 Leetcode,感谢????,如果内容对你有帮助,欢迎点赞 ????题目描述给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) chars。假如你可以用 chars 中的『字母』(字符)拼写出 words 中的某个『单词』(字符串),那么我们就认为你掌握了这个单词。注意:每次拼写时,chars 中的每个字母都只能用一次。返回词汇表 words...原创 2020-03-17 12:13:25 · 171 阅读 · 0 评论 -
【每日一题】Leetcode - 面试题14- I. 剪绳子 / 343. Integer Break【严谨数学证明】【时、空复杂度击败100%】
题目来源 Leetcode, 感谢????,如果内容对您有帮助,欢迎点赞。题目描述给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m] 。请问 k[0]k[1]…*k[m] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。...原创 2020-03-16 13:40:40 · 139 阅读 · 0 评论 -
【每日一题】Leetcode - 面试题 01.06. Compress String LCCI(字符串压缩)
题目来源 Leetcode, 感谢????,如果内容对您有帮助,欢迎点赞。题目描述字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。示例1:输入:“aabcccccaaa”输出:“a2b1c5a3”...原创 2020-03-16 13:30:48 · 127 阅读 · 0 评论 -
【每日一题】Leetcode - 322. Coin Change(零钱兑换)【DFS + 剪枝, 4ms,击败99.79%】
题目来源 Leetcode, 感谢????,如果内容对您有帮助,欢迎点赞。题目描述给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。示例 1:输入: coins = [1, 2, 5], amount = 11输出: 3解释: 11 = 5 + 5 + 1示例 ...原创 2020-03-15 18:35:37 · 189 阅读 · 0 评论 -
【每日一题】Leetcode - 695. Max Area of Island(岛屿的最大面积)
题目来源 Leetcode, 感谢????,如果内容对您有帮助,欢迎点赞。题目描述给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直) 的 1 (代表土地) 构成的组合。你可以假设二维矩阵的四个边缘都被水包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为0。)示例 1:[[0,0,1,0,0,0,0,1,...原创 2020-03-15 18:18:34 · 113 阅读 · 0 评论 -
【每日一题】Leetcode - 1013. Partition Array Into Three Parts With Equal Sum(将数组分成和相等的三个部分)
题目来源 Leetcode, 感谢????,如果内容对您有帮助,欢迎点赞。题目描述给你一个整数数组 A,只有可以将其划分为三个和相等的非空部分时才返回 true,否则返回 false。形式上,如果可以找出索引 i+1 < j 且满足 (A[0] + A[1] + … + A[i] == A[i+1] + A[i+2] + … + A[j-1] == A[j] + A[j-1]...原创 2020-03-15 17:38:46 · 190 阅读 · 0 评论 -
【每日一题】Leetcode - 240. Search a 2D Matrix II(搜索二维矩阵)/ 面试题04. 二维数组中的查找【不知道你有没有想到】
题目来源 Leetcode, 感谢????,如果内容对您有帮助,欢迎点赞。题目描述在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:每行的元...原创 2020-03-14 20:31:12 · 290 阅读 · 0 评论 -
【每日一题】Leetcode - 121. Best Time to Buy and Sell Stock(买卖股票的最佳时机)
题目来源 Leetcode, 感谢????,如果内容对您有帮助,欢迎点赞。题目描述给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1...原创 2020-03-12 22:20:00 · 107 阅读 · 0 评论 -
【每日一题】Leetcode - 26. Remove Duplicates from Sorted Array(删除排序数组中的重复项)
题目来源 Leetcode,感谢????,如果内容对您有帮助,欢迎点赞!题目描述给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组...原创 2020-03-12 21:20:37 · 98 阅读 · 0 评论 -
【每日一题】Leetcode - 1071. Greatest Common Divisor of Strings(字符串的最大公因子)【思路清奇】
题目和解题思路来源 Leetcode,感谢????,如果内容对您有帮助,欢迎点赞!题目描述对于字符串 S 和 T,只有在 S = T + … + T(T 与自身连接 1 次或多次)时,我们才认定 “T 能除尽 S”。返回最长字符串 X,要求满足 X 能除尽 str1 且 X 能除尽 str2。示例 1:输入:str1 = “ABCABC”, str2 = “ABC”输出:“AB...原创 2020-03-12 20:15:30 · 120 阅读 · 0 评论 -
【每日一题】Leetcode - 543. Diameter of Binary Tree (二叉树直径)【击败99%、4ms】
题目来源 Leetcode,感谢????,如果内容对您有帮助,欢迎点赞!题目描述给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。示例给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路...原创 2020-03-10 17:45:00 · 95 阅读 · 0 评论 -
算法 - Huffman编码
一、需求分析统计一篇文章中各个字符出现的频率,按照统计所得的频率使用Huffman算法编码文章,输出编码之后的文件以及Huffman编码再次解码之前的编码文件,判断编解码前后的文件是否一致,以判断算法的正确性二、Huffman算法描述Huffman编码法被称为最优编码法,所获得的编码为无重复前缀码,编码的依据是被编码的字符在整个原文中出现的频率Huffman树的生成过程:首先统...原创 2019-06-04 19:19:51 · 1102 阅读 · 0 评论 -
【每日一题】Leetcode - 贪心算法题目(1)
题目推荐来源:GitHub - LeetCode 101: A LeetCode Grinding Guide (C++ Version)算法解释:贪心算法或贪心思想采用贪心的策略,保证每次操作都是局部最优的,从而使最后得到的结果是全局最优的。Leetcode-455.分发饼干 - easyclass Solution { public int findContentChildren(int[] g, int[] s) { Arrays.sort(g); .原创 2021-02-09 15:34:21 · 229 阅读 · 0 评论 -
【有图有真相】一次性彻底理解 KMP 模式匹配算法(包含 KMP 算法的优化)
文章目录1. KMP 算法简介2. 什么是 next 数组朴素字符串匹配算法3. 如何计算 next 数组(具体代码)4. 优化的 next 数组(KMP 算法的优化)5. 如何使用 next 数组(KMP 算法具体实现)6. 我的一些思考1. KMP 算法简介KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris 和V.R.Pratt提出的,因此人们称它为克努特...原创 2020-03-10 23:02:30 · 1686 阅读 · 0 评论 -
【LintCode】1398. K进制加法
1398. K进制加法给出一个k,a,b,代表a和b都是一个k进制的数,输出a + b的k进制数。样例样例1输入: k = 3, a = “12”, b = “1”输出: 20解释: 12 + 1 = 20 in 3 bases.样例2输入: k = 10, a = “12”, b = “1”输出: 13解释: 12 + 1 = 13 in 10 bases....原创 2020-02-06 12:05:18 · 618 阅读 · 0 评论 -
算法 - 多项式加法与乘法 (c++)
题目描述:使用 链表 的数据结构实现多项式的加法和乘法。算法描述:多项式结构表达:一个多项式就是一个链表,链表的每一项就是多项式的一个子项,故定义子项类 Subitem,包含类成员项系数、阶数、指向下一项的指针,定义多项式类Multinomial,只包含一个类成员,即指向多项式第一项的指针多项式的运算分析:多项式在运算的过程中,如果多项式a加多项式b,可以看做是将多项式b的每一项依...原创 2019-04-02 14:10:05 · 1518 阅读 · 0 评论 -
数据结构 - c++模板类实现栈Stack
#ifndef STACK_HPP#define STACK_HPP#include <cassert>template <class T> class Stack{private: //the increment when the space are not enough const int INCREMENT = 32; //t...原创 2019-04-13 19:01:54 · 451 阅读 · 0 评论 -
算法 - 迷宫问题求解(c++,DFS,opencv可视化)
题目描述:使用深度优先的方法结局迷宫问题规定迷宫的最外围为一圈墙,给出起点和终点要求输出一条正确的路径,但不要求为最短路径使用opencv实现可视化,演示一个动态求解迷宫的过程算法描述:深度优先:DFS,在该问题中表现为如果在当前位置有可以通行的方向,则探索该方向,直到找到终点或者当前位置无可通行方向时,回溯到上一个位置。重复以上步骤,直到到达终点或者无法求解为止对于以上探索和...原创 2019-04-14 21:18:43 · 2083 阅读 · 0 评论 -
算法 - kmp匹配算法
文章目录问题描述算法描述如何生成next数组如何使用next数组运行结果心得收获完整代码问题描述实现kmp匹配算法利于软件 y-cruncher 生成百万位的 PI 的值,在其中使用kmp匹配算法匹配特定的数字串算法描述kmp匹配算法实则是利用next数组优化匹配过程的匹配方法,要理解kmp匹配要了解 如何生成next数组 以及 如何使用next数组 这两个核心问题如何生成n...原创 2019-05-09 21:35:32 · 236 阅读 · 0 评论