自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

走好每一步!

少壮不努力,老大徒伤悲

  • 博客(29)
  • 收藏
  • 关注

原创 atom 编辑器打造c/c++开发环境和atom 插件离线安装方法

atom 搭建c/c++ 开发环境需要安装三个必备插件 * linter-gcc * linter * gcc-make-run除此之外,好用的插件推荐 * minimap 这个插件类似于sublime 的缩略图 * atom-beautify 代码风格优化atom 搭建简易的Python开发环境安装两个插件 * autocomplete-python 该插件作用Python补

2017-05-20 23:35:54 6383 2

原创 动态规划经典问题总结

动态规划解法一般分以下几步: * 描述最优子结构 * 列出状态转移方程 * 从上而下递归求解 或者从下而上递推求解 一般情况下使用递推求解比较方便,最优子结构的描述影响着求解的方式 以下是动态规划经典问题: 最大连续子序列和问题 子结构描述: sum[i] 表示以i结尾最大连续子序列和 状态转移方程 sum[i] = max(sum[i-1]+a[i], a[i]) 代码如下:

2017-05-19 22:45:30 1974

原创 memcached使用

memcached介绍分布式缓存组件,数据类型比较单一,实现分布式通过客户端的分布式算法来实现的。 memcached常用操作1.memcached 启动 memcached -p(端口) -m(内存大小) -d(守护内存) client 连接使用 telnet 127.0.0.1 port 2.memcached 数据的操作 memcached相当以一个map,进行get s

2017-04-12 17:12:42 422

原创 随笔

2015年3月初,大学最后一个学期,提前回学校准备适应研究生的生活,2017年3月26日,今天,两年过去了,时间过得真快,总觉得应该写点什么记录一下自己的生活,学习。人生最好的时光莫过于大学校园这接近七年时间!

2017-03-26 17:12:02 380

原创 常用排序算法总结

常用排序算法:冒泡 选择 直接插入 二分插入 希尔排序 快速排序 归并排序 堆排序 算法的时间复杂度和空间复杂度就不分析了,自行百度,代码如下: #include<iostream>#include<string>using namespace std;void bubble_sort1(int arr[], int len){ for(int i = 0; i < len-1;

2017-03-26 17:05:51 550

原创 二叉搜索树的递归遍历和非递归遍历

递归遍历 void preOrder(TreeNode *root){ if(!root) return; cout << root->val << endl; preOrder(root->left); preOrder(root->right);} void inOrder(TreeNode *root){ if(!root) return

2017-03-26 16:58:31 548

转载 23种设计模式汇总整理

设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。其实还有两类:并发型模式和线程池模式

2017-02-22 15:25:50 217

原创 113. Path Sum II

使用递归的方法,传递path变量,sum减去经过path经过节点的值,最后为0,且为根节点即可。class Solution {public: vector<vector<int>> pathSum(TreeNode* root, int sum) { vector<int> path; vector<vector<int>> allPath;

2016-12-20 23:02:15 208

原创 110. Balanced Binary Tree

二叉平衡树的判断,使用递归的方法 class Solution {public: bool isBalanced(TreeNode* root) { return findDepth(root) == -1 ? false : true; } int findDepth(TreeNode* root) { if(!root) ret

2016-12-20 22:54:14 192

原创 115. Distinct Subsequences

用二维动态规划解决,代码如下 public class Solution { public int numDistinct(String s, String t) { int[][] dp = new int[t.length()+1][s.length()+1]; dp[0][0] = 1; for(int i = 1; i <= t

2016-12-20 22:52:26 156

原创 smart pointer

c++ smart pointer常用三种:unique_ptr ,shared_ptr, weak_ptr 所谓智能指针,能够自己管理动态内存,自动释放已经不适用的动态内存。 unique_ptr 以独占的方式使用某块内存,常用的类成员函数自己查看API文档,对于动态数组的管理有普通动态成员越有不同,在创建一个unique_ptr变量时需要自己传入一个删除器。 shared_ptr 共享一

2016-12-20 00:02:42 364

原创 git基础教程

在windows下安装git软件,安装完之后打开git-bash 初始配置命令: git config --global user.name "name" git config --global user.email "email address" 这两条对使用git仓库的本机进行标识,因为我们可能在多台机器使用不同的git仓库。 创建仓库的命令: mkdi

2016-12-16 18:11:07 174

原创 109. Convert Sorted List to Binary Search Tree

Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST. 方法一: 双指针策略,快指针一次走2个节点,慢指针一次走1个节点,当快指针到尾部时,慢指针对应的即为中间节点。但这种方法的时间复杂度为O(N logN):每层递归一共访问N/2

2016-12-15 22:08:27 316

原创 HTTPS和密钥协商小结

HTTPSHTTPS使用的TLS协议,主要版本是TLS1.1和TLS1.2,TLS1.3目前还是草案的形式,具体的标准尚未形成。 HTTP当前版本主要是HTTP1.0 HTTP1.1 HTTP协议的瓶颈以及优化技巧都是基于TCP协议本身的特性的。 HTTP优化的主要目标是带宽和延时,但是带宽现在来说已经不是问题,主要优化目标是延时。 HTTP的延时体现在几个方面: - 浏览器阻塞(HO

2016-12-12 15:46:09 4899

原创 win10磁盘占用率100%解决办法

运行services.msc命令,找到HomeGoup Listener与HomeGroup provider将这两项服务关闭掉,此时我们将离开家庭组。 由于Win10默认IPv6是开启状态,这会对硬盘进行一定程度的配置文件读写并且长期占用,所以我们需要关闭它,右击网络链接图标进入网络和共享中心,更改适配器,选中链接的网络,点击属性找到IPv6关闭掉。 Windows Defende

2016-12-12 15:22:13 2787

原创 密钥协商基础知识

不同的密钥协商算法TLS-RSA这种算法,客户端指定副主密钥,然后加密传输 TLS-RSA:在这个场景下,PreMasterSecret是由客户端指定的,并用RSA公钥加密发送给服务器。服务器不影响PReMasterSecret的生成。 TLS-DH算法,DH算法协商密钥开销很大 TLS-DH:基于DH的密钥交换也被称为静态Diffie-Hellman。在这种场景下,可能是双

2016-12-12 15:18:55 6779

原创 128. Longest Consecutive Sequence

第一种方法是利用set,然后以每个元素为中心,向两边扩散计算最长的连续子序列。算法复杂度为O(n) class Solution {public:int longestConsecutive(vector<int>& nums) { int res = 0; unordered_set<int> s(nums.begin(), nums.end()); for(int

2016-12-09 21:28:30 307

原创 140. Word Break II

流传最广的方法,先用DP判断是否可以进行分割,再用dfs遍历方案 class Solution {public: string m_str; unordered_set<string> m_wordDict; vector<string> wordBreak(string s, unordered_set<string>& wordDict) { m_st

2016-12-08 22:05:40 264

原创 132. Palindrome Partitioning II

这道题双重DP * 方法1 参考:喜刷刷 class Solution { public: int minCut(string s) { int n = s.size(); if(n<=1) return 0; vector<vector<bool>> isPal(n, vector<bool>(n, false));

2016-12-08 21:58:46 213

原创 130. Surrounded Regions

这道题只要把与边缘相连的‘O’全部换成‘V’,然后将所有的除‘V’之外的字母全部换成‘X’,最后再讲所有的‘V’换成‘O’。 方法的就是将DFS与边缘相连的‘O’, 或者BFS与边缘相连的‘O’。但是递归版本的DFS栈溢出,所有用栈的DFS即可。 1. 超时版本 class Solution {public:void solve(vector<vector<char>>& board) {

2016-12-08 21:48:58 201

原创 133. Clone Graph

思路:建立一个hash表,原节点与新建立的节点建立对应的关系,然后DFS遍历图也行, BFS遍历图也行。 方法一: BFS public class Solution { public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) { if(node == null) return

2016-12-06 22:50:59 212

原创 c++ 嵌套类

c++嵌套类c++嵌套类等同于内部类的概念,定义嵌套类的目的是为了隐藏信息,提高代码的抽象能力,相当与在内部为外部类提供了一种新的类型。 嵌套类仅仅只是语法上的嵌入,平行的关系,相互独立,相互没有访问的权限。不像Java成员内部类,需要先创建外部类的对象,才能创建内部类的对象。简单例子#include<iostream>#include<string>using namespace std;c

2016-12-05 16:27:19 1223

原创 Reorder List(链表重排序)

leetcode 143. Reorder ListGiven a singly linked list L: L0→L1→…→Ln-1→Ln, reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→…You must do this in-place without altering the nodes’ values.For example, Given {1,2,3,4

2016-12-05 11:43:52 387

原创 DFS和BFS 邻接矩阵和邻接表

DFS和BFS实现DFS有递归实现和非递归实现,非递归实现就是用栈来模拟递归的过程,BFS类似二叉树的层序遍历,使用一个LILF的简单队列即可以实现 图的表示用邻接矩阵,DFS和BFSpackage com.cn.jiang;import java.util.ArrayDeque;import java.util.LinkedList;import java.util.Queue;publ

2016-12-04 21:45:00 721

原创 markdown学习

markdown学习基本命令在markdown里使用#表示一级标题 ##表示二级标题 最多可以达到六级标题 markdown如何换行这个问题,可以使用两个空格+回车即可以markdown如何加粗字体,使用**加粗** 或者__加粗__也可以,至于如何变斜体,使用_斜体_或者*斜体*也可以插入引用 使用>符号就可以 这是一个引用示范 插入文字链接 使用[博客](http://blog.

2016-12-01 22:28:33 222

原创 MySQL常用命令总结

MySQL常用命令总结1. \c 清楚命令行buffer的,\g和;是结束命令行语句的,\G这条命令使一行的每个列打印到单独的行2. 创建数据库:create database dbname;3. 删除数据库:drop database dbname;4. 创建表:create table tablename(column name type constraints,colum

2016-12-01 11:03:11 227

原创 Java iterator iterable comparable comparator等接口设计的区别

java.langInterface IterableIterator iterator()Returns an iterator over a set of elements of type T.Iterable接口只有一个方法,并返回一个迭代器。很多集合类都实现了该接口,比如Collection  Map  Queue等等java.utilI

2016-11-13 19:23:45 531

原创 Java 常用包总结

一、Java 常用包java.lang--语言包:Java语言的基础类,包括Object类、Thread类、String、Math、System、Runtime、Class、Exception、Process等,是Java的核心类库java.util--实用工具包:Scanner、Date、Calendar、LinkedList、Hashtable、Stack、TreeSet等;

2016-11-13 12:47:25 12225 1

原创 算法的时间复杂度和空间复杂度分析

一 算法的时间复杂度分析 (1)时间频度一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。(2)

2016-05-10 17:08:38 4209

空空如也

空空如也

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

TA关注的人

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