自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

原创 生产者与消费者模型

typedef struct node{ struce node* next; int val;}Node;Node* head=NULL;//头结点初始化为空pthread_mutex_t mutex;pthread_cond_t cond;void *producer(void *arg){ while(1){ Node* pNew=...

2019-08-09 11:10:49 178

原创 设计模式之单例模式(懒汉、饿汉)

懒汉式单例模式:不到万不得已就不会去实例化类,也就是说在第一次用到类实例的时候才会去实例化。饿汉式单例模式:单例模式定义的时候就开始初始化。1.加锁的懒汉式(线程安全)#include<mutex>class Singleton{private: //构造函数私有 Singleton(){ } ~Singleto...

2019-08-09 10:22:46 197

原创 leetcode-946 验证栈序列

思路:用一个栈去模拟出入栈的过程 比如,当前pushed={1,2,3,4,5},popped={4,5,3,2,1}时,借助一个额外的栈s,置i=0,j=0(i指向pushed,j指向popped); popped[j]=4,所以先将,1,2,3压入栈s中,此时i指向了pushed中的4,j指向了popped中的4,它俩相同,所以可以不用入栈,相当于4入栈以后直接出栈了。此时...

2019-04-30 15:30:11 234

原创 leetcode-416. 分割等和子集

class Solution { bool search(vector<int>& nums, int idx, int target, vector<vector<pair<int, bool>>> &dp) { if (idx >= nums.size() || target < 0) return ...

2019-04-09 22:07:40 149

原创 leetcode-297. 二叉树的序列化与反序列化

      思路:通过前序、后续、或者层次遍历二叉树,用一个字符串保存节点的值,要注意的是,每个节点的值之后要添加一个特殊符号(比如下划线)分隔,否则可能无法区分节点的值。      比如一个节点的值可能是12,不加下划线的话,反序列化时就分不清楚,12表示的是一个值为12的节点,或者两个节点,其值分别为1,2。split函数用来去除原来作为分割的符号,本文中用来去除下划线。总之:怎么...

2019-01-26 20:54:19 565 1

原创 剑指offer-链表的入环节点

//方法一:使用set,空间复杂度为O(N)class Solution {public: ListNode* EntryNodeOfLoop(ListNode* pHead) { if(pHead==NULL||pHead-&gt;next==NULL) return NULL; set&lt;ListNode*&gt...

2019-01-22 23:07:26 293

原创 leetcode-206-反转链表1

//方法一:空间复杂度o(N)的方法class Solution {public: ListNode* reverseList(ListNode* head) { if(head==NULL||head-&gt;next==NULL) return head; stack&lt;ListNode*&gt; s;//利用堆栈 ...

2019-01-22 23:02:40 108

原创 leetcode-129. 求根到叶子节点数字之和

思路:用一个字符串记录节点的值,每次将节点的值添加到字符串的最后,当访问到叶子节点时,将路径和计入sum.回溯时,弹出最后的一个字符值即可。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right;...

2018-12-30 16:56:40 147

原创 leetcode-199. 二叉树的右视图

思路:打印每一层的最后一个节点即可。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NU...

2018-12-30 15:39:41 147

原创 leetcode-198. 打家劫舍

class Solution {public: int rob(vector&lt;int&gt;&amp; nums) { if(nums.empty()) return 0; if(1==nums.size()) return nums[0]; size_t n=nums.size();...

2018-12-12 23:18:30 120

原创 leetcode-515. 在每个树行中找最大值-c++

    一开始没有考虑每层中会出现负数的情况,之后把负无穷取为 -0x3f3f3f3f,以为已经足够小了。结果有个测试用例居然是这样的:......  最后老老实实换成INT_MIN吧。思路:树的层次遍历,也就是图的BFS,更新每层的最大值和节点数即可。/** * Definition for a binary tree node. * struct TreeNode {...

2018-11-20 22:24:42 184

原创 leetcode-529-扫雷游戏-c++

思路:点开一个格子时,判断当前格子是不是雷,是雷的话,把该格子改为'X',然后直接返回。若当前格子不是雷,则先统计周围有几个雷,如果旁边一个雷都没有,把当前格子改为'B',并递归的搜索其他八个方向的格子。如果旁边有雷,则把当前格子改为雷的数目,返回。其中的order表示访问次序,用来区分是不是一开始就点到了雷。class Solution {private: void dfs(...

2018-11-20 21:54:43 470 1

原创 leetcode-559. N叉树的最大深度(两种解法)-c++

方法一:dfs(类似于求二叉树的高度)class Solution {public: int maxDepth(Node* root) { if(root==NULL) return 0; int max=0; for(int i=0;i&lt;root-&gt;children.size();++i){ ...

2018-11-19 22:31:14 390

原创 leetcode-695-岛屿的最大面积

给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直) 的 1 (代表土地) 构成的组合。你可以假设二维矩阵的四个边缘都被水包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为0。)示例 1:[[0,0,1,0,0,0,0,1,0,0,0,0,0], [0,0,0,0,0,0,0,1,1,1,0,0,0], [0,...

2018-11-18 22:02:22 201

原创 图相关(四)图的邻接矩阵表示(C++)-拓扑排序

一.测试用图二.拓扑排序void toposort(graph g) {//注意,拓扑排序中要把邻接矩阵中没有边的位置置为0(为了统计入度) size_t N = g.cost.size(); vector&lt;int&gt; InDegree(N, 0);//统计入度,每个顶点的入度初始化为0 for (size_t col = 0;col &lt; N;...

2018-11-01 21:41:08 725

原创 图相关(三)图的邻接矩阵表示(C++)及最最小生成树算法(prim和kruskal)

一.测试用图邻接矩阵表示://prim注意是无向图 vector&lt;vector&lt;int&gt;&gt; p(6, vector&lt;int&gt;(6, INF));//类似dijikstra,没有边的点设为INF p[0][1] = 10; p[0][3] = 30; p[0][4] = 45; p[1][0] = 10; ...

2018-11-01 21:34:25 1074

原创 图相关(二)图的邻接矩阵表示(C++)及最短路径算法

一.Dijikstra算法注意:计算最短路径时,需要把邻接矩阵中没有边的位置初始化为无穷大;此处以INF表示,INF可以取0x3f3f3f3f,不能直接设为INT_MAX(因为做加法时会上溢)。测试用图:其邻接矩阵表示为:vector&lt;vector&lt;int&gt;&gt; test_graph(7, vector&lt;int&gt;(7, INF)); te...

2018-11-01 21:18:50 3034

原创 图相关(一)图的邻接矩阵表示(C++)及图的遍历

一.图的邻接矩阵表示法struct graph { vector&lt;vector&lt;int&gt;&gt; cost;//邻接矩阵 vector&lt;string&gt; vertex;//顶点的值,用string较好,节点的名字可以是v1,v2等等};二.图的遍历2.0 图的遍历测试所用到的图:邻接矩阵表示://测试用的图 v...

2018-11-01 21:02:59 899

原创 leetcode138-复制带随机指针的链表

方法一:利用map,空间复杂度O(N)class Solution {public: RandomListNode *copyRandomList(RandomListNode *head) { if(head==NULL) return NULL; //先进行浅拷贝 //先设置一个哨兵节点,方便直...

2018-10-10 19:48:55 1722

原创 leetcode-86-分隔链表

思路:把小于x的值放到less中,大于等于x的放到more中,保持原序,最后再拷贝回原链表中。class Solution {public: ListNode* partition(ListNode* head, int x) { if(head==NULL||head-&gt;next==NULL) return head; ...

2018-10-08 18:06:39 202

原创 字符串排序

题目:https://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584?tpId=37&amp;tqId=21249&amp;tPage=2&amp;rp=&amp;ru=/ta/huawei&amp;qru=/ta/huawei/question-ranking题目描述 解题思路:代码:#incl...

2018-09-23 21:43:17 95

转载 (转)Vim简明教程【CoolShell】

vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的。下面的文章翻译自《Learn Vim Progressively》,我觉得这是给新手最好的VIM的升级教程了,没有列举所有的命令,只是列举了那些最有用的命令。非常不错。——————————正文开始——————————你想以最快的速度学习人类史上最好的文...

2018-08-14 23:29:48 190

转载 C++中的static_cast ,reinterpret_cast的用法和区别

原文地址:https://www.cnblogs.com/heyonggang/p/3361643.html用法:static_cast &lt; type-id &gt; ( expression )该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法:①用于类层次结构中基类(父类)和派生类(子类)之间指针或引用的转换。...

2018-08-05 10:14:26 25992 3

原创 leetcode-121- 买卖股票的最佳时机

给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 ...

2018-08-02 23:23:35 166

原创 leetcode-109- 有序链表转换二叉搜索树

给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定的有序链表: [-10, -3, 0, 5, 9],一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 ...

2018-08-01 23:21:56 153

原创 gcc/g++常见指令总结

      gcc是linux系统集成的编译器。在linux环境下编辑程序,首先需要克服的便是没有集成开发环境的一键式操作所带来的麻烦。这其中涉及命令行操作、编译选项的设定、文件依赖关系的书写(makefile)等问题。这里主要介绍的是关于gcc的常用命令行参数及其相应的作用。(若编译C++文件,则只需将下列命令的 gcc 换为 g++,源文件的后缀应为 .C/.cpp/.c++/.cc等)...

2018-08-01 15:53:05 1110

原创 leetcode-120-三角形最小路径和(动态规划)

给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。说明:如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。...

2018-07-31 23:18:51 608

转载 leetcode-96-不同的二叉搜索树(动态规划)

原文链接:https://blog.csdn.net/u014472643/article/details/81260183给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ /...

2018-07-29 22:51:42 261

原创 leetcode-64-最小路径(动态规划)

给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[  [1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。思路:本题属于较简单的动态规划,题解如下:class Solution {publi...

2018-07-29 10:44:21 115

原创 leetcode-63- 不同路径 II(动态规划)

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。说明:m 和 n 的值均不超过 100。示例 1:输入:[  ...

2018-07-28 23:07:20 2346

原创 leetcode-62-不同路径(动态规划)

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?说明:m 和 n 的值均不超过 100。示例 1:输入: m = 3, n = 2输出: 3解释:...

2018-07-28 21:59:15 335

原创 leetcode-24-两两交换链表中的节点

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。示例:给定 1-&gt;2-&gt;3-&gt;4, 你应该返回 2-&gt;1-&gt;4-&gt;3.说明:你的算法只能使用常数的额外空间。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。思路:通过递归两两交换节点/** * Definition for singly-linked list. * struct Lis...

2018-07-03 22:43:26 99

原创 leetcode-108. 将有序数组转换为二叉搜索树

将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -10 5思路...

2018-07-02 21:03:44 128

原创 leetcode-106. 从中序与后序遍历序列构造二叉树

详细解释见另一篇博客:https://blog.csdn.net/u014450222/article/details/80889403根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder =[9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树: ...

2018-07-02 20:45:33 5395

原创 leet-code-105. 从前序与中序遍历序列构造二叉树 and leet-code-106 从中序与后序遍历序列构造二叉树

leet-code-105. 从前序与中序遍历序列构造二叉树:class Solution {private: int search(int *inorder,int len,int target){ for(size_t i=0;i<len;++i){ if(target==inorder[i]) ...

2018-07-02 20:29:12 449

原创 leetcode-206-反转链表

反转一个单链表。示例:输入: 1-&gt;2-&gt;3-&gt;4-&gt;5-&gt;NULL输出: 5-&gt;4-&gt;3-&gt;2-&gt;1-&gt;NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?/** * Definition for singly-linked list. * struct ListNode { * int val; *...

2018-06-22 19:14:13 105

原创 leetcode-103- 二叉树的锯齿形层次遍历

给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回锯齿形层次遍历如下:[ [3], [20,9], [15,7]]思路:先按层打印,最后将结果中的第二行,第四行.....

2018-06-20 18:50:49 127

原创 leet-code-566-重塑矩阵

在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充。如果具有给定参数的reshape操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。示例 1:输入: nums = [...

2018-06-20 09:45:59 107

原创 leetcode-575-分糖果

给定一个偶数长度的数组,其中不同的数字代表着不同种类的糖果,每一个数字代表一个糖果。你需要把这些糖果平均分给一个弟弟和一个妹妹。返回妹妹可以获得的最大糖果的种类数。示例 1:输入: candies = [1,1,2,2,3,3]输出: 3解析: 一共有三种种类的糖果,每一种都有两个。 最优分配方案:妹妹获得[1,2,3],弟弟也获得[1,2,3]。这样使妹妹获得糖果的种类数最多。示...

2018-06-20 09:28:05 412

原创 leet-code-404-左叶子之和

计算给定二叉树的所有左叶子之和。示例: 3 / \ 9 20 / \ 15 7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * ...

2018-06-20 09:00:56 313

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除