
算法学习
包含各种算法的学习笔记
追赶早晨
这个作者很懒,什么都没留下…
展开
-
LeetCode之两数相加
1.题目给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -&...原创 2019-07-03 20:34:47 · 95 阅读 · 0 评论 -
LeetCode之无重复字符的最长子串
1. 题目给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长...原创 2019-07-04 21:46:32 · 115 阅读 · 0 评论 -
LeetCode之简单回文数
1. 题目判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。...原创 2019-06-28 20:59:18 · 238 阅读 · 0 评论 -
LeetCode之最大正方形
1. 题目在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例:输入: 1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 42. 代码函数vector<vector> dp(m+1, vector(n+1, 0)); 定义二维vector以及其初始化!!!当测试用例是 [] 的时...原创 2019-07-02 20:33:58 · 443 阅读 · 0 评论 -
LeetCode之两数之和
1. 题目 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 ...原创 2019-07-03 19:48:50 · 122 阅读 · 0 评论 -
LeetCode之最大回文串--动态规划
1. 题目给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1: 输入: "babad" 输出: "bab"注意: "aba" 也是一个有效答案。示例 2: 输入: "cbbd" 输出: "bb"2. 解题方法:(1) 暴力法前提是没有要求内存或者时间,则书写起来是最快速的 。新的函数std::reverse(tem....原创 2019-06-26 19:06:04 · 295 阅读 · 0 评论 -
LeetCode之最小路径和
1. 题目给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。2. 代码*自己的函数 *vector<vector>& gridi...原创 2019-06-27 20:08:04 · 146 阅读 · 0 评论 -
PAT乙级1004
题目读入 n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。输入格式: 每个测试输入包含 1 个测试用例,格式为 第 1 行:正整数 n 第 2 行:第 1 个学生的姓名 学号 成绩 第 3 行:第 2 个学生的姓名 学号 成绩 ... ... ... 第 n+1 行:第 n 个学生的姓名 学号 成绩 其中姓名和...原创 2019-07-11 15:03:40 · 145 阅读 · 0 评论 -
PAT乙类之1011 A+B 和 C
一、题目给定区间 [−2^31, 2 ^31 ] 内的 3 个整数 A、B 和 C,请判断 A+B 是否大于 C。输入格式:输入第 1 行给出正整数 T (≤10),是测试用例的个数。随后给出 T 组测试用例,每组占一行,顺序给出 A、B 和 C。整数间以空格分隔。输出格式:对每组测试用例,在一行中输出 Case #X: true 如果 A+B>C,否则输出 Case ...原创 2019-07-18 19:31:43 · 143 阅读 · 0 评论 -
PAT乙类1005之继续(3n+1)猜想 (25 分)
一、 题目卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如对 n=3 进行验证的时候,我们需要计算 3、5、8、4、2、1,则当我们对 n=5、8、4、2 进行验证的时候,就可以直接判定卡拉兹猜想的真伪,而不需要重复计算,因为这 4 个数已经在验证3的时候遇到过了,我们...原创 2019-07-14 13:15:06 · 136 阅读 · 0 评论 -
PAT乙类1014 福尔摩斯的约会 (20 分)
一、题目大侦探福尔摩斯接到一张奇怪的字条:我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm。大侦探很快就明白了,字条上奇怪的乱码实际上就是约会的时间星期四 14:04,因为前面两字符串中第 1 对相同的大写英文字母(大小写有区分)是第 4 个字母 D,代表星期四;第 2 对相同的字符是 E ,那是第 5 ...原创 2019-07-23 16:56:00 · 177 阅读 · 0 评论 -
PAT乙类之1012 数字分类 (20 分)
一、 题目给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字:A1= 能被 5 整除的数字中所有偶数的和;A2= 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算 n1−n2+n3−n4⋯;A3= 被 5 除后余 2 的数字的个数;A4= 被 5 除后余 3 的数字的平均数,精确到小数点后 1 位;A5= 被 5 除后余 4 的数字中最大数字。输入格式...原创 2019-07-18 22:52:14 · 154 阅读 · 0 评论 -
PAT乙类1010之1010 一元多项式求导
一、题目设计函数求一元多项式的导数。(注:Xn(n为整数)的一阶导数为nXn−1。)输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数)。数字间以空格分隔。输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是 0,但是表示为 0 0。输入样例:3 4 -5 2...原创 2019-07-17 21:04:31 · 185 阅读 · 0 评论 -
PAT真题乙类1006 换个格式输出整数
一、题目让我们用字母 B 来表示“百”、字母 S 表示“十”,用 12...n 来表示不为零的个位数字 n(<10),换个格式来输出任一个不超过 3 位的正整数。例如 234 应该被输出为 BBSSS1234,因为它有 2 个“百”、3 个“十”、以及个位的 4。 输入格式: 每个测试输入包含 1 个测试用例,给出正整数 n(<1000)。 输出格式: 每个测试用...原创 2019-07-12 21:32:10 · 155 阅读 · 0 评论 -
PAT乙类1007之素数对猜想
一、题目让我们定义dn为:dn=pn+1−pn,其中pi是第i个素数。显然有d1=1,且对于n>1有dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<10^5),请计算不超过N的满足猜想的素数对的个数。 输入格式: 输入在一行给出正整数N。 输出格式: 在一行中输出不超过N的满足猜想的素数对的个数。 输入样...原创 2019-07-13 21:06:59 · 121 阅读 · 0 评论 -
PAT乙类1013 数素数 (20 分)
一、题目令 Pi表示第 i 个素数。现任给两个正整数 M≤N≤10^4,请输出 PM到 PN的所有素数。输入格式:输入在一行中给出 M 和 N,其间以空格分隔。输出格式:输出从 PM到 PN的所有素数,每 10 个数字占 1 行,其间以空格分隔,但行末不得有多余空格。输入样例:5 27输出样例:11 13 17 19 23 29 31 37 41 4347 53 5...原创 2019-07-23 16:14:16 · 183 阅读 · 0 评论 -
PAT乙类1009 说反话 (20 分)
一、 题目给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。输出格式:每个测试用例的输出占一行,输出倒序后的句子。输入样例:Hello World H...原创 2019-07-16 20:03:23 · 130 阅读 · 0 评论 -
PAT乙类1008之数组元素循环右移问题
一、题目一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0A1⋯AN−1变换为(AN−M⋯AN−1A0A1⋯AN−M−1)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?输入格式:每个输入包含一个测试用例,第1行输入N(1≤N≤100)和M(≥0);第...原创 2019-07-14 11:35:07 · 181 阅读 · 0 评论 -
AcWing之找出数组中重复的数字
题目给定一个长度为 n 的整数数组 nums,数组中所有的数字都在 0∼n−1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。注意:如果某些数字不在 0∼n−1 的范围内,或数组中不包含重复数字,则返回 -1;*/样例给定 nums = [2, 3, 5, 4, 3, 2, 6, 7]。返回 2 或 3。...原创 2019-03-26 23:25:00 · 180 阅读 · 0 评论 -
AcWing之二维数组的查找
题目在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。样例输入数组:[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]如果输入查找数值为7,则返回true,如果输入查找数值为5,则返回false。方法一:(单...原创 2019-03-28 18:30:55 · 156 阅读 · 0 评论 -
AcWing之重建二叉树
题目输入一棵二叉树前序遍历和中序遍历的结果,请重建该二叉树。注意: 二叉树中每个节点的值都互不相同; 输入的前序遍历和中序遍历一定合法;样例给定:前序遍历是:[3, 9, 20, 15, 7]中序遍历是:[9, 3, 15, 20, 7]返回:[3, 9, 20, null, null, 15, 7, null, null, null, null]返回的...原创 2019-04-03 17:33:07 · 121 阅读 · 0 评论 -
AcWing之找替换空格
题目请实现一个函数,把字符串中的每个空格替换成"%20"。你可以假定输入字符串的长度最大是1000。注意输出字符串的长度可能大于1000。样例输入:"We are happy."输出:"We%20are%20happy."方法一:// 时间复杂度是 O(n)。 class Solution {public: string replaceSpaces(string...原创 2019-03-29 13:18:07 · 153 阅读 · 0 评论 -
AcWing之找出不改变数组找到重复的数字
题目 给定一个长度为 n+1 的数组nums,数组中所有的数均在 1∼n 的范围内,其中 n≥1。 请找出数组中任意一个重复的数,但不能修改输入的数组。样例给定 nums = [2, 3, 5, 4, 3, 2, 6, 7]。返回 2 或 3。思考题: 如果只能使用 O(1) 的额外空间,该怎么做呢?方法一(使用了O(n)的空间):class Solution {pub...原创 2019-03-27 15:20:45 · 165 阅读 · 0 评论 -
AcWing之从尾到头打印链表
题目输入一个链表的头结点,按照 从尾到头 的顺序返回节点的值。返回的结果用数组存储。样例输入:[2, 3, 5]返回:[5, 3, 2]方法一:/* struct ListNode { int val; //当前结点的值 ListNode *next; //指向下一个结点的指针 ListNode(int x) : val(x), next(...原创 2019-04-03 13:52:04 · 150 阅读 · 0 评论