- 博客(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 231
原创 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 200
原创 leedcode题解-搜索
1、组成整数的最小平方数数量279. Perfect Squares (Medium)输入: n = 12 输出: 3 解释: 12 = 4 + 4 + 4.BFS广度优先搜索一层一层地进行遍历,每层遍历都以上一层遍历的结果作为起点,遍历一个距离能访问到的所有节点。需要注意的是,遍历过的节点不能再次被遍历。思路:用层序遍历的BFS思想,一层一层的遍历(通过控制队列的size),第一次找...
2019-04-09 16:21:11 266
转载 C++中list用法详解
1.关于list容器list是一种序列式容器。list容器完成的功能实际上和数据结构中的双向链表是极其相似的,list中的数据元素是通过链表指针串连成逻辑意义上的线性表,也就是list也具有链表的主要优点,即:在链表的任一位置进行元素的插入、删除操作都是快速的。list的实现大概是这样的:list的每个节点有三个域:前驱元素指针域、数据域和后继元素指针域。前驱元素指针域保存了前驱元素的首地址;...
2019-04-03 09:17:09 4829
原创 leedcode题解-贪心
1、分配饼干455. Assign Cookies (Easy)题目描述:每个孩子都有一个满足度,每个饼干都有一个大小,只有饼干的大小大于等于一个孩子的满足度,该孩子才会获得满足。求解最多可以获得满足的孩子数量。Input: [1,2], [1,2,3] Output: 2思路:对饼干大小、孩子的满足度排序,尽最大可能满足更多的孩子;class Solution {publ...
2019-04-02 16:37:20 191
原创 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 176
原创 leedcode题解2-排序
1、Kth Element215. 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 159
原创 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 345
转载 [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 101
原创 string::npos的用法
npos可以表示string的结束位子,是string::type_size类型的,也就是find()返回的类型。find函数在找不到指定值得情况下会返回string::npos。
2019-03-27 14:22:51 290
转载 c++运算符优先级
转自:https://www.cnblogs.com/kubixuesheng/p/4072608.html1、首先永远忘不了的是,逗号运算符级别最低,毫无争议的还有()括起来的,人工设定了最高优先级,先算括号里的。2、非人为的,就是四个,函数调用(),[]数组下标,点运算符,间接->运算符。他们是优先级最高的,从左到右。拿->记忆结合性3、还有最起码知道,所有的单目运算符...
2019-03-23 15:39:28 2551
原创 堆化-将数组排成小根堆
给出一个整数数组,堆化操作就是把它变成一个最小堆数组。对于堆数组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 1327
原创 前缀树的实现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 261
原创 岛问题求解
一个矩阵中只有0和1两种值, 每个位置都可以和自己的上、 下、 左、 右四个位置相连如果有一片1连在一起, 这个部分叫做一个岛, 求一个矩阵中有多少个岛?举例:0 0 1 0 1 01 1 1 0 1 01 0 0 1 0 00 0 0 0 0 0这个矩阵中有三个岛解:矩阵数量较少时,用递归函数解决public class Islands { //求有多少个岛 ...
2019-03-07 10:25:04 166
转载 转载-并查集详解
江湖上散落着各式各样的大侠,有上千个之多。他们没有什么正当职业,整天背着剑在外面走来走去,碰到和自己不是一路人的,就免不了要打一架。但大侠们有一个优点就是讲义气,绝对不打自己的朋友。而且他们信奉“朋友的朋友就是我的朋友”,只要是能通过朋友关系串联起来的,不管拐了多少个弯,都认为是自己人。这样一来,江湖上就形成了一个一个的帮派,通过两两之间的朋友关系串联起来。而不在同一个帮派的人,无论如何都无法通过...
2019-03-07 10:00:58 327
原创 翻转单词顺序列
剑指offer上的题,翻转单词顺序。这道题的思路是先整体翻转,再分别翻转每一个单词。如student. a am I,整体翻转后为I ma a .tneduts,分别翻转后则为I am a student.第一个代码是看了别人的解答写出来的,后面的是自己一开始码的。。。思路太过限制了,记录下来勉励一下自己,再进一步提升和认真学习吧~fightingclass Solution {p...
2019-03-06 17:17:00 123
原创 二叉树的序列化与反序列化
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 227
原创 验证二叉搜索树
由于二叉搜索树的中序遍历是一个递增序列,我们只需要把这个中序遍历保存下来,再判断这是一个递增序列即可: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 94
原创 二叉树的前序、中序、后序遍历非递归实现
前序遍历class Solution {public:/*** @param root: A Tree* @return: Preorder in ArrayList which contains node values.*/vector preorderTraversal(TreeNode * root) {// write your code herevectorresult...
2019-03-04 20:21:02 159
原创 (c++)将单向链表按某值划分成左边小、中间相等、右边大的形式
ListNode* listPartition1(ListNode* head, int num){if(head=nullptr)return nullptr;if(head->next=nullptr)return head;ListNode *sh=NULL;//小于区域的headListNode *st=NULL;//小于区域的endListNode *eh=NULL;...
2019-03-02 15:21:44 500
转载 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 1536
原创 鸟哥的linux私房菜第三版习题
第七章习题1.什么是绝对路径和相对路径:绝对路径是从根目录开始的,相对路径是从当前目录开始的,最明显的区别为绝对路径必须以/开头,相对路径则不是。2.如何更改一个目录的名称?例如由/home/test变为/home/test2:mv /home/test /home/test23.PATH这个环境变量的意义是什么:当我们执行一个命令时,系统会按照PATH变量的设置渠道PATH定义目录下查找相...
2019-01-15 20:23:55 445
STM32 12864驱动代码
2018-01-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人