
C++
TdOooonline
这个作者很懒,什么都没留下…
展开
-
kmp及其运用
一、算法介绍D.E. Knuth、 JH.Morris和 R. Pratt(其中 Knuth和Prat共同研究, Morris独立研究)发表一个模式匹配算法,可以大大避免重复遍历的情况,我们把它称之为克努特一莫里斯一普拉特算法,简称KMP算两个我觉得讲的可以的视频算法介绍:https://www.bilibili.com/video/BV1Ys411d7yh介绍&&代码复现:https://www.bilibili.com/video/BV1hW411a7ysKMP算法核心部分原创 2020-06-19 12:01:14 · 390 阅读 · 0 评论 -
最短路径 Dijkstra
一、算法流程Dijkstra算法流程如下初始化,集合K中加入结点1,结点1到结点1最短距离为0,到其它结点为无穷(或不确定)。遍历与集合K中结点直接相邻的边(U,V,C),其中U属于集合K,V不属于集合K,计算由结点1出发按照已经得到的最短路到达U,再由U经过该边到达V时的路径长度。比较所有与集合K中结点直接相邻的非集合K结点该路径长度,其中路径长度最小的结点被确定为下一个最短路径确定的结点,其最短路径长度即为这个路径长度,最后将该结点加入集合K。若集合K中已经包含了所有的点,算法结東;否则重复步原创 2020-06-18 14:29:30 · 244 阅读 · 0 评论 -
栈的应用——计算器专题
栈的现实应用很多,这里记录下用栈解决四则运算表达式求值的相关题目。 平常见到的公式如“7+5*4”,称作中缀表达式,因为所有的运算符号都在两数字的中间,而对于计算机来说,中缀表达式是无法直接解析的。针对这个问题,20世纪50年代,波兰逻辑学家 Jan ukasiewicz,创造了一种不需要括号的后缀表达法,称为逆波兰( Reverse Polish Notation,RPN)表示。这种后缀表示法,是表达式的一种新的显示方式,非常巧妙地解决了程序实现四则运算的难题。 以“9+(3-1)×3+1原创 2020-06-17 13:57:34 · 396 阅读 · 0 评论 -
2020-06-11 LeetCode 739 每日温度 C++
题目:739. 每日温度 根据每日 气温 列表,请重新生成一个列表,对应位置的输出是需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高,请在该位置用 0 来代替。 例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。 提示:气温 列表长度的范围是 [1, 30000]。每个气温的值的均为华氏度,都是在 [30, 100] 范围内的整数。 这几天我要光明正大咕咕咕原创 2020-06-11 10:57:30 · 276 阅读 · 0 评论 -
2020-06-10 LeetCode 9 回文数 C++
题目:9. 回文数 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例1:输入: 121输出: true示例2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。进阶: 你能不将整数转为字符串来解决这个问题吗? 思路:这道题一看提交记录两年前做过。。。转字符串的方原创 2020-06-10 09:42:43 · 183 阅读 · 0 评论 -
2020-06-09 LeetCode 面试题46 把数字翻译成字符串 C++
题目:面试题46. 把数字翻译成字符串 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。示例1:输入: 12258输出: 5解释: 12258有5种不同的翻译,分别是"bccfi", "bwfi", "bczi", "mcfi"和"mzi"提示: 0 <= num < 2312^{31}231原创 2020-06-09 09:54:45 · 219 阅读 · 0 评论 -
2020-06-08 LeetCode 990 等式方程的可满足性 C++
题目:990. 等式方程的可满足性 给定一个由表示变量之间关系的字符串方程组成的数组,每个字符串方程 equations[i] 的长度为 4,并采用两种不同的形式之一:“a==b” 或 “a!=b”。在这里,a 和 b 是小写字母(不一定不同),表示单字母变量名。 只有当可以将整数分配给变量名,以便满足所有给定的方程时才返回 true,否则返回 false。示例1:输入:["a==b","b!=a"]输出:false解释:如果我们指定,a = 1 且 b = 1,那么可以满足第一个方程,但无法满原创 2020-06-08 10:27:41 · 279 阅读 · 0 评论 -
2020-06-06 LeetCode 128 最长连续数列 C++
题目:128. 最长连续序列 给定一个未排序的整数数组,找出最长连续序列的长度。 要求算法的时间复杂度为 O(n)。示例:输入: [100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。 时间复杂度为O(n),排序算法排除,第一时间想到的就是HashMap,c++里边的map就是有序表,把所有元素都插进去之后自然是有序的,然后在再遍历有序表看最长连续是多少就比较简单了,时间上需要遍历一次数组和Map,复杂度为O(n),空间复杂度原创 2020-06-06 11:01:40 · 271 阅读 · 0 评论 -
2020-06-05 LeetCode 面试题29 顺时针打印矩阵 C++
题目:面试题29. 顺时针打印矩阵 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。示例1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例2:输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]限制:0 <= matrix.length <= 1000 <= matrix[i]原创 2020-06-05 11:44:11 · 218 阅读 · 0 评论 -
2020-06-04 LeetCode 238 除自身以外数组的乘积 C++
题目:238. 除自身以外数组的乘积 给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]提示:题目数据保证数组之中任意元素的全部前缀元素和后缀(甚至是整个数组)的乘积都在 32 位整数范围内。说明: 请**不要使用除法,**且在 O(n) 时间复杂度内完成此题。进阶:你可以在常数空间复杂度内完成这个题原创 2020-06-04 10:24:40 · 198 阅读 · 0 评论 -
2020-06-03 LeetCode 837 新21点 C++
题目: 爱丽丝参与一个大致基于纸牌游戏 “21点” 规则的游戏,描述如下: 爱丽丝以 0 分开始,并在她的得分少于 K 分时抽取数字。 抽取时,她从 [1, W] 的范围中随机获得一个整数作为分数进行累计,其中 W 是整数。 每次抽取都是独立的,其结果具有相同的概率。 当爱丽丝获得不少于 K 分时,她就停止抽取数字。 爱丽丝的分数不超过 N 的概率是多少?示例1:输入:N = 10, K = 1, W = 10输出:1.00000说明:爱丽丝得到一张卡,然后停止。示例2:输入:N = 6原创 2020-06-03 20:43:44 · 192 阅读 · 0 评论 -
2020-06-02 LeetCode 16 最接近的三数之和 C++
题目:面试题64. 求1+2+…+n 今天每日一题之前不久之前就做过,当时花了一整个下午,印象贼深,思路如下:https://blog.youkuaiyun.com/qq_40405705/article/details/105903614 然后做了另外一道,16. 最接近的三数之和题目:给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如,给定数组 nums = [-1,2原创 2020-06-02 10:19:35 · 198 阅读 · 0 评论 -
2020-06-01 LeetCode 1431 拥有最多糖果的孩子&& 43 字符串相乘 C++
题目: 给你一个数组 candies 和一个整数 extraCandies ,其中 candies[i] 代表第 i 个孩子拥有的糖果数目。 对每一个孩子,检查是否存在一种方案,将额外的 extraCandies 个糖果分配给孩子们之后,此孩子有 最多 的糖果。注意,允许有多个孩子同时拥有 最多 的糖果数目。示例1输入:candies = [2,3,5,1,3], extraCandies = 3输出:[true,true,true,false,true] 解释:孩子 1 有 2 个糖原创 2020-06-01 10:56:09 · 180 阅读 · 0 评论 -
2020-05-31 LeetCode 101 对称二叉树 C++
题目: 给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。示例: 1 / \ 2 2 / \ / \3 4 4 3 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3进阶: 你可以运用递归和迭代两种方法解决这个问题吗? 题目比较简单,尤其是递归,对于对称的两个节点t1,t2主要需要比较三个值:t1与t2节点的原创 2020-05-31 10:37:48 · 165 阅读 · 0 评论 -
LeetCode 20 有效的括号 C++
今天脑子不是好使,每日一题就想到了暴力解法,官方题解没看懂,不是很熟悉C++的栈咋写,所以先放这了偷个懒,把之前栈的题目复习了一下。题目: 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。示例1:输入: "()"输出: true示例2:输入: "()[]{}"输出: true示例3:输入: "(]"输原创 2020-05-30 11:26:09 · 225 阅读 · 0 评论 -
2020-05-29 LeetCode 198 打家劫舍 C++
题目: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 + 3 = 4 。示例2原创 2020-05-29 10:05:23 · 222 阅读 · 0 评论 -
2020-05-28 LeetCode 394 字符串解码 C++
题目: 给定一个经过编码的字符串,返回它解码后的字符串。 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。 你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。 此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。示例:s = "3[a]2[bc]", 返回 "aaabcbc".s = "3[a2原创 2020-05-28 11:24:56 · 269 阅读 · 0 评论