
Leetcode
文章平均质量分 94
Jared_Yang
一口吃不成大胖子
展开
-
Leetcode--堆类型题总结(单堆与双堆)
目录1.C++中的堆实现2.单堆问题3.双堆问题1.C++中的堆实现可以直接用优先级队列priority_queue默认是大顶堆 priority_queue<int> maxheap小顶堆 priority_queue<int,vector<int>,greater<int>> minheap也可以使用 mul...原创 2020-03-16 16:18:56 · 1371 阅读 · 0 评论 -
Leetcode- 滑动窗口类型题总结
Sliding window--分为滑动窗口和固定窗口滑动窗口题目一般是在数组、链表、字符串等线性结构上进行操作,比如找最长的子字符串、最短的子字符串等等判断是否需要用滑动窗口法:对象是数组、链表、字符串等线性结构题目要求求具有最短、最长、或固定长度的子序列滑动窗口问题一般具有以下结构:先移动右窗口边界,逐步扩大右窗口,直到达到临界条件,然后循环移动左窗口,并更新问题...原创 2020-03-10 15:32:04 · 2171 阅读 · 0 评论 -
C++中的常成员函数以及const用于函数重载
1.什么是常成员函数?在类中可以含有普通成员函数和静态成员函数,而使用 const修饰的普通成员函数称为 常成员函数const修饰的是普通成员函数中的this指针指向的内存空间类的普通成员函数中都存在隐藏的 this指针,比如:class Test{private: int a; int b;public: Test(int a,int b) ...原创 2019-12-27 18:00:47 · 3369 阅读 · 1 评论 -
求前K个最大数,或第K个最大数或第K大频率的单词类似问题小结
求前K个最大数,最小数,第K个最大数,或者 出现频率为第K大的单词是哪个 此类问题,首先想到的就是排序,但是求第K最大而已,并不要求完全有序,所以 想到了 大顶堆 和小顶堆我们可以用到 优先级队列 priority_queue,它实际上是一个队列,但是它的功能是始终保持队首元素是当前元素的最大值定义:priority_queue<Type, Container, Functional...原创 2019-11-22 19:44:52 · 456 阅读 · 0 评论 -
Bit Manipulation常用总结
1.判断奇偶奇偶数的特征:如果一个数是偶数,则对于其二进制来说,最低位肯定是0;如果一个数是奇数,则对于其二进制来说,最低位肯定是1,因为在二进制表示中,只有 会产生1所以可以利用这一特征来判断奇偶数if((num&1) == 0){ //偶数}else{ //奇数}注意:不用写为 num&1 == 0 ,这样的判断是错误的,必须给前面...原创 2019-10-24 13:07:39 · 1408 阅读 · 0 评论 -
Longest Substring Without Repeating Characters--------采用滑动窗口SlidingWindow解题总结
1.可以用滑动窗口法来解决的问题一般为 满足某种条件的最大子数组,最长子字符串,总之就是连续的最长的,(也可以是最小的,还没做过,之后补充)通俗点,滑动窗口就是拿一个可以变宽变窄的框框,在一个字符串上进行移动,当然怎么移动就需要根据问题来具体说明,直到窗口内或者窗口外符合题目要求即可(一般是关注窗口内,当然也有关注窗口外的,下面有具体例子)而且滑动窗口题目一般与哈希set或哈希map结合使...原创 2019-10-21 22:20:27 · 259 阅读 · 0 评论 -
递归的三大要素
链接:https://www.zhihu.com/question/31412436/answer/683820765来源:知乎递归的三大要素第一要素:明确你这个函数想要干什么对于递归,我觉得很重要的一个事就是,这个函数的功能是什么,他要完成什么样的一件事,而这个,是完全由你自己来定义的。也就是说,我们先不管函数里面的代码什么,而是要先明白,你这个函数是要用来干什么。例如,我定...转载 2019-10-03 11:14:49 · 12829 阅读 · 2 评论 -
分治法的解题总结
1.首先说明是分治法?分治法的核心思想是将 原问题拆解为 若干个规模较小的子问题,而子问题 可以很容易解决,并且最后可以通过子问题的解进行合并来得到原问题的解分治法是按照分治模式建立的算法:分治模式在每层递归时都有三个步骤:分解原问题为若干子问题 解决子问题(递归求解) 合并子问题的解得到原问题的解一般来讲,解决子问题比较简单,因为子问题已经缩小到了一定规模,很容易求出来;一...原创 2019-10-01 15:36:08 · 1639 阅读 · 0 评论 -
有关leetcode中丑数Ugly Number
1.定义:什么是丑数?一般的丑数 是 指其 素数因子 只含 2, 3 ,5所以,第一题:如何判断一个正数n是否为丑数;由于丑数中只含素数因子 2,3,5,所以一个数如果是丑数,则必然是 2,3,5的相互相乘的组合,所以我们可以让 n先除以2,直至不能除为止,然后除以3,直至不能除为止,最后除以5,直至不能除(即有余数)为止,判断:如果最后的商为1,则说明该数是丑数所以,代码如下:...原创 2019-09-29 21:33:45 · 327 阅读 · 0 评论 -
Fraction to Recurring Decimal分数转化为小数解题分析
1.问题描述Given two integers representing the numerator and denominator of a fraction, return the fraction in string format.If the fractional part is repeating, enclose the repeating part in parenthes...原创 2019-09-22 21:31:16 · 459 阅读 · 0 评论 -
getline 函数和标准输入流的cin.getline的用法和不同
1.getline()函数的定义:istream& getline(istream& is,string & str, char delim = '/n')其中 istream 是输入流,getline()函数从输入流中读取数据str为字符串,存取从输入流中读取的数据delim为分隔符,遇到分隔符时,将已读取到的数据存入str中,默认分隔符为'/n',也可以...原创 2019-08-12 16:31:21 · 1427 阅读 · 0 评论 -
字符串形式的二进制之和 与 数组形式的十进制之和
字符串形式的二进制之和(Leetcode)QUESTION:Given two binary strings, return their sum (also a binary string).The input strings are both non-empty and contains only characters 1 or 0.Example 1:Input: a = "11", ...原创 2019-07-02 16:08:35 · 227 阅读 · 0 评论 -
啊哈算法炸弹人游戏----深度优先搜索与广度优先搜索
1.问题描述:在炸弹人游戏中,你有一颗炸弹,该炸弹的威力是十字形的,即只能爆出上下左右型的火焰,且火焰不能穿墙,问应该将炸弹放到哪里炸弹才能杀死最多的小怪?(注:该位置必须是炸弹人能有初始位置走到的位置,毕竟炸弹人不能飞,墙或者小怪都能阻挡炸弹人的路径),现在游戏地图如下图所示,炸弹人的位置在(3,3)处。2.解题思路:需要先将问题抽象出来,我们可以用一个 二维数组 来表示 游戏地图...原创 2019-07-08 16:16:56 · 946 阅读 · 0 评论 -
C++中toupper、tolower 、isalpha、isalnum、isdigit、islower、isupper、isblank、isspace的用法
1.toupper()int toupper(int)接收和返回的都是该字符的ASCII码,用的时候直接输入字符就可以,C++内部会自动转换将一个字符转换为大写char c = 'c';char tmp = tolower(c);//将小写字母c转为大写,返回大写c的ASCII码,由于char类型变量接收,内部自动完成转换cout << tmp;//输出大写C...原创 2019-07-12 12:10:34 · 1729 阅读 · 2 评论 -
全排列问题(不含有相同元素与含有相同元素的全排列问题)
1.给定一个数组,数组中元素均不相同,写出数组元素的全排列组合比如: [1,2,3]Output:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]由于数组中不含相同元素,所有不用考虑重复问题,现在我们来解析 [1,2,3]的全排列是如何得到的:1,2,3的全排列,我们先看后两个数[2,3]的...原创 2019-07-23 22:20:16 · 4145 阅读 · 0 评论 -
Dynamic programming动态规划算法
1.什么是动态规划算法?动态规划算法是指将复杂问题拆分为简单问题,并存储简单问题的结果,避免重复计算。也就是说动态规划算法需要满足以下3个特点:1.可以将问题分解为相似的子问题,并且子问题有重复 2.每一个子问题只解决一次 3.存储子问题解决后的结果2.什么样的问题可以用动态规划解决?可以用动态规划解决的问题主要有如下3个特征:1. 重复的子问题 2. 最优子结构...原创 2019-07-19 12:06:44 · 348 阅读 · 0 评论 -
Leetcode中有关Sum问题的一些总结----通用性方法
1.最简单的TwoSum问题问题描述:Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and y...原创 2019-07-23 12:12:41 · 481 阅读 · 0 评论 -
C++中string类的方法总结
string类与C语言中的以 '/0' 结尾的字符串不同, string类的本质上是以字符作为元素的vector特化版本;不存在0字符结尾这个概念,能装入'\0'这种数据本文介绍string类的常用方法,方便日后复习:1.常用构造函数string s1;//定义字符串,调用默认构造函数,生成空字符串 s1 = "";string s2("abcde"); //定义字符串,并调用s...原创 2019-08-11 11:34:27 · 969 阅读 · 1 评论 -
深度搜索处理问题的关键 --- 做leetcode深度搜索类题目小结
1.深度优先搜索中的关键2.深度优先搜索小结3.深度优先搜索和回溯法的区别4.深度优先搜索与递归的区别1.深度优先搜索中的关键深度搜索算法通常用来 解决 全排列,不重复组合,分组问题,多条路径,路径的条数等等对于深度优先搜索,最重要的参数有两个,第一是 深度搜索的次数 step,可以看做需要将待搜索的结果放入到 step 个盒子中,直到放满为止。第二个是每一...原创 2019-08-24 11:30:18 · 2554 阅读 · 1 评论 -
1-9九个数字不重复组成一个三位数加法算式,求出所有组合
问题描述:将1-9的9个数字不重复的填入[ ][ ][ ] + [ ][ ][ ] = [ ][ ][ ],使得等式成立如 173 + 286 = 459 且 将 286 + 173 = 459 视为同一种,问满足这样条件的情况有几种问题解法:将9个不重复数字填入到9个位置并且满足等式成立条件,可以看做求9个数组的全排列,只要全排列满足 前3个数字 + 中间3个数字 = 最后3个数字即可...原创 2019-07-07 21:23:52 · 47669 阅读 · 1 评论