一些题
算法题
阳光丿洒脱
死亡不是终点,遗忘才是。
展开
-
差分矩阵
题目描述输入一个n行m列的整数矩阵,再输入q个操作,每个操作包含五个整数x1, y1, x2, y2, c,其中(x1, y1)和(x2, y2)表示一个子矩阵的左上角坐标和右下角坐标。每个操作都要将选中的子矩阵中的每个元素的值加上c。请你将进行完所有操作后的矩阵输出输入格式第一行包含整数n,m,q。接下来n行,每行包含m个整数,表示整数矩阵。接下来q行,每行包含5个整数x1, y1...原创 2020-04-21 12:44:48 · 1454 阅读 · 0 评论 -
差分
题目描述输入一个长度为n的整数序列。接下来输入m个操作,每个操作包含三个整数l, r, c,表示将序列中[l, r]之间的每个数加上c。请你输出进行完所有操作后的序列。输入格式第一行包含两个整数n和m。第二行包含n个整数,表示整数序列。接下来m行,每行包含三个整数l,r,c,表示一个操作。输出格式共一行,包含n个整数,表示最终序列。数据范围1≤n,m≤100000,1≤l≤...原创 2020-04-21 11:18:08 · 284 阅读 · 0 评论 -
子矩阵的和
题目描述输入一个n行m列的整数矩阵,再输入q个询问,每个询问包含四个整数x1, y1, x2, y2,表示一个子矩阵的左上角坐标和右下角坐标。对于每个询问输出子矩阵中所有数的和。输入格式第一行包含三个整数n,m,q。接下来n行,每行包含m个整数,表示整数矩阵。接下来q行,每行包含四个整数x1, y1, x2, y2,表示一组询问。输出格式共q行,每行输出一个询问的结果。数据范围...原创 2020-04-21 10:22:42 · 1969 阅读 · 1 评论 -
前缀和
前缀和输入一个长度为n的整数序列。接下来再输入m个询问,每个询问输入一对l, r。对于每个询问,输出原序列中从第l个数到第r个数的和。输入格式第一行包含两个整数n和m。第二行包含n个整数,表示整数数列。接下来m行,每行包含两个整数l和r,表示一个询问的区间范围。输出格式共m行,每行输出一个询问的结果。数据范围1≤l≤r≤n,1≤n,m≤100000,−1000≤数列中元素...原创 2020-04-21 09:42:12 · 184 阅读 · 0 评论 -
LeetCode【13--罗马数字转整数】LeetCode【14--最长的公共前缀】
罗马数字转整数题目描述罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的...原创 2020-03-04 16:43:41 · 457 阅读 · 0 评论 -
LeetCode【11--盛水最多的容器】LeetCode【12 -- 整数转罗马数字】
盛水最多的容器题目描述给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。解题思路本题的意思是,下标之差与数组所对应的下标的值之和最大所以,一个从前,一个从后,选择两个下标所对应的值最小的,...原创 2020-03-02 18:29:53 · 501 阅读 · 0 评论 -
LeetCode【9-- 回文数】LeetCode【10 --正则表达式的匹配】
回文数题目描述判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。解题思路判断该数的逆序数是不是和原数相同代码实现class Solution {public: bool isPalindrome(int x) { if(x<0) return false; long num ...原创 2020-03-01 19:09:25 · 365 阅读 · 0 评论 -
LeetCode【7--整数反转】 LeetCode【8--字符串转整数】
整数反转题目描述给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。解题思路x%10 取一位,x/10下一位,注意越界,代码实现class Solution {public: int reverse(int x) { int sum = 0; while(x) { ...原创 2020-02-29 10:24:41 · 160 阅读 · 0 评论 -
LeetCode【5--最长的回文子串】 LeetCode【6--Z字形变换】
最长的回文子串题目描述给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。解题思路可以跟无重复的最长子串一样,用一个滑动窗口,只不过这个窗口的右边界往右,左边界每回要从右边界的下标往左。还需要一个二维数组记录当前窗口中记录的字符串是不是回文串再需要一个变量记录回文串的长度。比较出最大的回文串例如:baccab首先定义右边界right,左边界l...原创 2020-02-28 16:32:01 · 254 阅读 · 0 评论 -
LeetCode【3--无重复的最长字串】 LeetCode【4--有序数组中的中位数】
无重复的最长字串题目描述给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。解题思路看到这道题,其实就两个步骤,遍历字符串,记录当前字符有没有重复。重复一般解决就是哈希,这里用个数组表示。这里找最长的字串,就是一个滑动窗口,我们在这里用两个下标表示,一个为左边界,一个为右边界,初始值left = 0,right = -1;滑动窗口的滑动就是,右边界扩大,左边界缩小拿...原创 2020-02-27 17:52:52 · 212 阅读 · 0 评论 -
LeetCode【1--两数之和】 LeetCode【2--两数相加】
两数之和题目描述给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。解题思路直接两重循环遍历,无脑代码实现class Solution {public: vector<int> twoSum(vector<...原创 2020-02-26 18:39:24 · 143 阅读 · 0 评论 -
【剑指offer】_19 滑动窗口中的最大值
题目描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5...原创 2020-02-07 11:55:08 · 122 阅读 · 0 评论 -
【剑指offer】_18 数据流中的中位数
题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。解题思路一般数据流我们用数组来表示,要得到中位数有很多种方法,这里介绍一种时间复杂度较小的方法,用C++...原创 2020-02-07 10:15:32 · 175 阅读 · 0 评论 -
【剑指offer】_17正则表达式的匹配
题目描述请实现一个函数用来匹配包括’.‘和'*'的正则表达式。模式中的字符’.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"ab*a"均不匹配解题思路就是分两种情况,看表达式的下一个字符是不是'*'pattern下一个字符不为‘...原创 2020-01-24 14:27:35 · 105 阅读 · 0 评论 -
【剑指offer】_16 构建乘积数组
题目描述给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。解题思路设有数组大小为5。对于第一个for循环第一步:b[0] = 1;第二步:b[1] = b[0] * a[0] = a[0]第三步:b[2] = b[1] * a[1] = a[...原创 2020-01-22 09:33:33 · 106 阅读 · 0 评论 -
【剑指offer】_15数组中重复的数字
题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。解题思路扫描数组{2,3,1,0,2,5,3}下标为0开始,如果当前位置的数不等于它的下标则与下表为当前元素的值进行交换...原创 2020-01-20 11:57:05 · 168 阅读 · 0 评论 -
【剑指offer】_14 不用加减乘除做加法
题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。解题思路首先看十进制是如何做的: 5+7=12,三步走第一步:相加各位的值,不算进位,得到2。第二步:计算进位值,得到10. 如果这一步的进位值为0,那么第一步得到的值就是最终结果。第三步:重复上述两步,只是相加的值变成上述两步的得到的结果2和10,得到12。同样我们可以用三步走的方式计算二进制值相...原创 2020-01-12 11:48:00 · 175 阅读 · 0 评论 -
【剑指offer】_13 圆圈中最后的数
题目描述年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0…m-1报数…这样下去…直到剩下最后一个...原创 2020-01-12 11:45:23 · 109 阅读 · 0 评论 -
【剑指offer】_12 数组中的逆序对
题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007解题思路剑指offer的解法看到这个题目,我们的第一反应是顺序扫描整个数组。每扫描到一个数组的时候,逐个比较该数字和它后面的数字的大小。如果后面的数字比它小,则这两个数字就组成了一个...原创 2020-01-06 15:18:25 · 79 阅读 · 0 评论 -
【剑指offer】_11整数中1出现的次数
题目描述求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。解题思路主要思路:设定整数点(如1、10、100等等)作为位置点i(对...原创 2020-01-02 16:44:02 · 124 阅读 · 2 评论 -
【剑指offer】_10二叉树和为某一路径值
题目描述输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。解题思路要求一路径的和,那么必然终止条件为叶子结点,从根结点出发,从左往右,每条路径的和都与给定的值比较,自然能求出。但往往二叉树的题,都会用到递归,本身是二叉树,那么子树必定为二叉树,如果找到规律??我们可以这样想,递归一次,旧调用...原创 2019-12-30 15:57:58 · 123 阅读 · 0 评论 -
【剑指offer】_09二叉搜索树的后序遍历序列
题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。解题思路比如下面的这棵二叉搜索树它的后序遍历为0214369875;我们设当前根节点为root;第一次root=5我们可以看出以3和6中间为分割线,左边为5的左子树,右边为5的右子树,数组最后一个数为5,为根结点。所以 {0,2,1,4,...原创 2019-12-26 19:08:37 · 83 阅读 · 0 评论 -
【剑指offer】_08.数值的整数次方
题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0解题思路首先一个数的任意次方,这个数有可能是负数和正数和零,然后次方也有可能是负数和正数和零当这个数是零时,0的任何次方就是0。当这个数是正数时,分情况次方为零,此时答案为1次方为负数,算出来的结果要用1除以。次方为正数...原创 2019-12-13 21:28:56 · 75 阅读 · 0 评论 -
【剑指offer】_07 矩形覆盖
题目描述我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?解题思路依旧是斐波那契数列2n的大矩形,和n个21的小矩形其中target*2为大矩阵的大小有以下几种情形:target <= 0 大矩形为<= 2*0,直接return 1;target = 1大矩形为2*1,只有一种摆放方法,retu...原创 2019-12-11 22:10:41 · 63 阅读 · 0 评论 -
【剑指offer】_06 变态跳台阶
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。解题思路链接:https://www.nowcoder.com/questionTerminal/22243d016f6b47f2a6928b4313c85387关于本题,前提是n个台阶会有一次n阶的跳法。分析如下:f(1) = 1f(2) = f(2-1) + f(2...原创 2019-12-11 21:59:36 · 97 阅读 · 0 评论 -
【剑指offer】_05 连续子数组最大和
题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列...原创 2019-12-06 23:11:11 · 85 阅读 · 0 评论 -
【剑指offer】_04 重建二叉树
题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。解题思路用前序的顺序重建整个二叉树,先判断传进来参数是否合法,创建根结点,然后找到第一个根结点位置,遍历整个中序顺序,找到与前序序列第一个数相等的数的...原创 2019-11-24 22:55:01 · 66 阅读 · 0 评论 -
【剑指offer】_02替换空格
题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。解题思路首先我们先算出整个字符串的长度,还有总共多少个空格。因为空格只占一个字节,但是"%20"占两个字节,所以新的容量是原来字符串长度+空格数*2,然后把新的容量与给定的字符串总大小作比较,如果大于给定的大小,就说明给的用例出...原创 2019-11-21 15:28:42 · 66 阅读 · 0 评论 -
【剑指offer】_01 (二维数组中的查找)
题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解题思路我们从右上角的那个数开始走,如果给定的数比当前数大,说明要找的数在当前列的下面,所以直接让行++,如果给定的数比当前数小,说明在当前数的右边,所以让列- -,一直循环,一直到数组越界条件...原创 2019-11-20 17:08:55 · 108 阅读 · 0 评论