- 博客(22)
- 资源 (3)
- 收藏
- 关注
原创 leedcode题解-二叉树
94. 二叉树的中序遍历 给定一个二叉树,返回它的中序遍历。(进阶:递归算法很简单,你可以通过迭代算法完成吗?) 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,3,2] class Solution { public: vector<int> inorderTraversal(TreeNode...
2019-05-09 14:24:32
263
原创 leedcode题解-动态规划
递归和动态规划都是将原问题拆成多个子问题然后求解,他们之间最本质的区别是,动态规划保存了子问题的解,避免重复计算。 1、爬楼梯 70. Climbing Stairs (Easy) 3、矩阵的最小路径和 64. Minimum Path Sum (Medium) 思路:创建与grid相同大小的dp表,dp[i][j]表示从(0,0)到(i,j)的最短路径。由于第0行上的值只能由左边的值往...
2019-05-06 10:55:03
230
原创 leedcode题解-搜索
1、组成整数的最小平方数数量 279. Perfect Squares (Medium) 输入: n = 12 输出: 3 解释: 12 = 4 + 4 + 4.BFS广度优先搜索一层一层地进行遍历,每层遍历都以上一层遍历的结果作为起点,遍历一个距离能访问到的所有节点。需要注意的是,遍历过的节点不能再次被遍历。 思路:用层序遍历的BFS思想,一层一层的遍历(通过控制队列的size),第一次找...
2019-04-09 16:21:11
304
转载 C++中list用法详解
1.关于list容器 list是一种序列式容器。list容器完成的功能实际上和数据结构中的双向链表是极其相似的,list中的数据元素是通过链表指针串连成逻辑意义上的线性表,也就是list也具有链表的主要优点,即:在链表的任一位置进行元素的插入、删除操作都是快速的。list的实现大概是这样的:list的每个节点有三个域:前驱元素指针域、数据域和后继元素指针域。前驱元素指针域保存了前驱元素的首地址;...
2019-04-03 09:17:09
4862
原创 leedcode题解-贪心
1、分配饼干 455. Assign Cookies (Easy) 题目描述:每个孩子都有一个满足度,每个饼干都有一个大小,只有饼干的大小大于等于一个孩子的满足度,该孩子才会获得满足。求解最多可以获得满足的孩子数量。 Input: [1,2], [1,2,3] Output: 2 思路:对饼干大小、孩子的满足度排序,尽最大可能满足更多的孩子; class Solution { publ...
2019-04-02 16:37:20
213
原创 leedcode题解-二分查找
1、求开方 69. Sqrt(x) (Easy) 利用二分查找的思想,因为sqrt所在的区间肯定在1~x之间,又有sqrt==x/sqrt,sqrt=x/mid,通过比较sqrt与mid的大小,若mid>sqrt,往mid左边走,若mid较小,mid<sqrt往mid右边走,知道走到一个i的平方<x,i+1的平方>x的位置,此时end<start,跳出循环,end...
2019-04-02 16:36:27
193
原创 leedcode题解2-排序
1、Kth Element 215. Kth Largest Element in an Array (Medium) 题目描述:找到第 k 大的元素。 快速选择 :时间复杂度 O(N),空间复杂度 O(1) class Solution { public: int findKthLargest(vector<int>& nums, int k) { ...
2019-03-30 14:53:53
184
原创 Leetcode 题解 - 双指针
1、有序数组的 Two Sum 题目描述:在有序数组中找出两个数,使它们的和为 target。 定义前后指针,若两指针所指的值大于target,则右指针往左走,sum减小,若小于则左指针往右走,sum增大。 class Solution { public: vector<int> twoSum(vector<int>& numbers, int ta...
2019-03-27 20:10:40
377
转载 [LeetCode] Longest Word in Dictionary through Deleting 删除后得到的字典中的最长单词
class Solution { public: string findLongestWord(string s, vector<string>& d) { sort(d.begin(), d.end(), [](string a, string b){ if (a.size() == b.size()) return a &l...
2019-03-27 19:00:17
118
原创 string::npos的用法
npos可以表示string的结束位子,是string::type_size类型的,也就是find()返回的类型。find函数在找不到指定值得情况下会返回string::npos。
2019-03-27 14:22:51
308
转载 c++运算符优先级
转自:https://www.cnblogs.com/kubixuesheng/p/4072608.html 1、首先永远忘不了的是,逗号运算符级别最低,毫无争议的还有()括起来的,人工设定了最高优先级,先算括号里的。 2、非人为的,就是四个,函数调用(),[]数组下标,点运算符,间接->运算符。他们是优先级最高的,从左到右。拿->记忆结合性 3、还有最起码知道,所有的单目运算符...
2019-03-23 15:39:28
2614
原创 堆化-将数组排成小根堆
给出一个整数数组,堆化操作就是把它变成一个最小堆数组。 对于堆数组A,A[0]是堆的根,并对于每个A[i],A [i * 2 + 1]是A[i]的左儿子并且A[i * 2 + 2]是A[i]的右儿子。 class Solution { public: /* * @param A: Given an integer array * @return: nothi...
2019-03-11 10:21:36
1396
原创 前缀树的实现c++
class TrieNode{ public: TrieNode *child[26];//定义一个长度为26的数组(字符的取值为a~z)存放的是TrieNode结点型数据 bool isword; TrieNode():isword(false){ for(int i=0;i<26;i++){ child[i]=nu...
2019-03-07 15:00:23
286
原创 岛问题求解
一个矩阵中只有0和1两种值, 每个位置都可以和自己的上、 下、 左、 右四个位置相连 如果有一片1连在一起, 这个部分叫做一个岛, 求一个矩阵中有多少个岛? 举例: 0 0 1 0 1 0 1 1 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 这个矩阵中有三个岛 解:矩阵数量较少时,用递归函数解决 public class Islands { //求有多少个岛 ...
2019-03-07 10:25:04
188
转载 转载-并查集详解
江湖上散落着各式各样的大侠,有上千个之多。他们没有什么正当职业,整天背着剑在外面走来走去,碰到和自己不是一路人的,就免不了要打一架。但大侠们有一个优点就是讲义气,绝对不打自己的朋友。而且他们信奉“朋友的朋友就是我的朋友”,只要是能通过朋友关系串联起来的,不管拐了多少个弯,都认为是自己人。这样一来,江湖上就形成了一个一个的帮派,通过两两之间的朋友关系串联起来。而不在同一个帮派的人,无论如何都无法通过...
2019-03-07 10:00:58
355
原创 翻转单词顺序列
剑指offer上的题,翻转单词顺序。这道题的思路是先整体翻转,再分别翻转每一个单词。如student. a am I,整体翻转后为 I ma a .tneduts,分别翻转后则为I am a student. 第一个代码是看了别人的解答写出来的,后面的是自己一开始码的。。。思路太过限制了,记录下来勉励一下自己,再进一步提升和认真学习吧~fighting class Solution { p...
2019-03-06 17:17:00
139
原创 二叉树的序列化与反序列化
class Solution { public: /** * This method will be invoked first, you should design your own algorithm * to serialize a binary tree which denote by a root node to a string which * can be easily deseri...
2019-03-05 16:26:24
249
原创 验证二叉搜索树
由于二叉搜索树的中序遍历是一个递增序列,我们只需要把这个中序遍历保存下来,再判断这是一个递增序列即可: class Solution { public: /** * @param root: The root of binary tree. * @return: True if the binary tree is BST, or false * */ void inorderTraversal(...
2019-03-05 10:11:42
114
原创 二叉树的前序、中序、后序遍历非递归实现
前序遍历 class Solution { public: /** * @param root: A Tree * @return: Preorder in ArrayList which contains node values. */ vector preorderTraversal(TreeNode * root) { // write your code here vectorresult...
2019-03-04 20:21:02
183
原创 (c++)将单向链表按某值划分成左边小、中间相等、右边大的形式
ListNode* listPartition1(ListNode* head, int num){ if(head=nullptr) return nullptr; if(head->next=nullptr) return head; ListNode *sh=NULL;//小于区域的head ListNode *st=NULL;//小于区域的end ListNode *eh=NULL;...
2019-03-02 15:21:44
523
转载 c++中,什么时候用 A a;和什么时候用A a=new A;
说明:此处内容是在网上摘抄的,总结一下,为了以后查找方面。 new是在堆上分配内存,它需要用delete释放,否则会造成内存泄漏(使用的内存没有即时释放,造成内存的浪费) 而A a在右大括号执行后,会自动释放内存 如 int main() { A a;//定义了一个a对象 A *p=new A;//在堆上定义了一个对象,它的指针保存在p里,注意,堆上定义的对象没有名字,必须用指针保存 return...
2019-02-28 17:02:37
1643
原创 鸟哥的linux私房菜第三版习题
第七章习题 1.什么是绝对路径和相对路径:绝对路径是从根目录开始的,相对路径是从当前目录开始的,最明显的区别为绝对路径必须以/开头,相对路径则不是。 2.如何更改一个目录的名称?例如由/home/test变为/home/test2:mv /home/test /home/test2 3.PATH这个环境变量的意义是什么:当我们执行一个命令时,系统会按照PATH变量的设置渠道PATH定义目录下查找相...
2019-01-15 20:23:55
470
STM32 12864驱动代码
2018-01-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人