自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【leetcode】61-旋转链表【C/C++】

题目如下:解题思路:本题的思路较为简单:先遍历单向链表并将其尾部指向 head ,将其变为单向环装列表,并记录链表元素个数 count; 之后根据右移次数 k ,在头部开始的第 count-k 个节点处切段链表,该节点的后一个节点就是新的头结点。代码如下:/** * Definition for singly-linked list. * struct ListNo...

2019-09-30 11:24:33 163

原创 【leetcode】60-第K个排列【C/C++】

题目如下:解题思路:首先想到 46-全排列 采用回溯的方法,递归调用直到第K个数,但该方法时间复杂度过高,存在超时问题。既然所有的全排列是从小到大,那么可以对每一位的数字进行定位。当有n位集合时第一位显然有n个可能,而每一个第一位确定后,引申出来的可能性有 (n-1)!个,则对于第一位数字的索引应该是k/(n-1)! 。如下所示:/**直接用回溯法做的话需要在回溯到第k...

2019-09-29 16:55:20 324

原创 【C/C++】二维Vector的初始化方法

二维Vector的初始化方法详见代码:方法一:#include<iostream>#include<vector>void main(){ int a = 2; int b = 4; //初始化方法1 //std::vector<std::vector<int>> vec(a, std::vect...

2019-09-29 10:59:23 22216

原创 【leetcode】59-螺旋矩阵 II【C/C++】

题目如下:解题思路:对于这种螺旋遍历的方法,重要的是要确定上下左右四条边界的位置。初始化时,上边界up就是0,下边界down就是n-1,左边界left是0,右边界right是n-1; 然后进行while循环,先遍历上边界,将对应元素加入结果res,然后上边界下移一位,如果此时上边界大于下边,说明此时已经遍历完成了,直接break。; 之后遍历右边界,将对应元素加入结果res,然...

2019-09-29 10:50:42 122

原创 【C/C++】如何清空Vector内的所有元素

如何清空Vector内的所有元素声明如下:int i, j;vector <int> vecInt;for (int i=0;i<500;i++){ vecInt.push_back(i);}j = vecInt.capacity(); //j=512i = vecInt.size(); //i=500 方法一:使用 clear...

2019-09-29 09:52:50 28439

原创 【leetcode】58-最后一个单词的长度【C/C++】

题目如下:解题思路:遍历一遍数组,使用 res 数组记录当前单词; 遇到非空格字母则加入 res,碰到空格且当前空格后紧跟着一个非空格字母则清空 res,否则不做处理; 最后返回最后的 res.size() 即可。代码如下:class Solution {public: int lengthOfLastWord(string s) { vector...

2019-09-29 09:38:47 120

原创 【leetcode】57-插入区间【C/C++】

题目如下:解题思路:原区间列表已经排序,那么插入的新区间跟列表中的每一个原区间只会存在三种位置情况,假设当前某一原区间为 [A, B] ,新区间为 [X, Y] :当前原区间整体小于新区间,即当前区间的末尾元素小于新区间的起始元素,A<=B<=X<=Y,不相交; 当前原区间与新区间相交,即当前区间的起始元素小于新区间的末尾元素即可,A<=X<=B&l...

2019-09-27 16:37:37 236

原创 【leetcode】56-合并区间【C/C++】

题目如下:解题思路:首先,将列表按照区间的 start 大小排序,那么在这个排序的列表中可以合并的区间一定是连续的。 然后,将第一个区间插入 merged 数组中,然后按顺序考虑之后的每个区间: 如果当前区间的左端点在前一个区间的右端点之后,那么他们不会重合,可以直接将这个区间插入 merged 中; 否则,他们重合,更新前一个区间的右端点。代码如下:class Solu...

2019-09-27 15:15:28 440

原创 【C/C++】Vector如何获取最后一个元素

C++ 获取vector容器最后一个元素声明:vector<T> vec;方法如下://方法一: return vec.at(vec.size()-1);//方法二: return vec.back();//方法三: return vec.end()-1; //注意:end指向末尾元素的下一个元素。//方法四: return vec.rbeg...

2019-09-27 15:09:42 49440 2

原创 【Linux】tmux常用命令

tmux是什么tmux(terminal multiplexer)是Linux上的终端复用神器,可从一个屏幕上管理多个终端(准确说是伪终端)。使用该工具,用户可以连接或断开会话,而保持终端在后台运行。类似的工具还有screen,个人对这二者的使用感受是,用过tmux就再也不想用screen了。tmux基本结构tmux的结构包括会话(session)、窗口(window)、窗格(pane...

2019-09-23 13:10:16 403

原创 【虚拟化】KVM、Qemu、Virsh的区别与联系

开始前,请看上一篇背景:虚拟化的简单理解背景首先看qemu,其中关键字emu,全称emulator模拟器,所以单纯使用qemu是采用的完全虚拟化的模式。Qemu向Guest OS模拟CPU,也模拟其他的硬件,GuestOS认为自己和硬件直接打交道,其实是同Qemu模拟出来的硬件打交道,Qemu将这些指令转译给真正的硬件。由于所有的指令都要从Qemu里面过一手,因而性能比较差。按...

2019-09-23 10:18:20 3228 1

转载 【虚拟化】虚拟化的简单理解

原文:我是虚拟机我困惑!?内核指操作系统内核。所有的操作系统都有内核,无论是Windows还是Linux,都管理着三个重要的资源:计算,网络,存储。计算指CPU和内存,网络即网络设备,存储即硬盘之类的。内核是个大管家,想象你的机器上跑着很多的程序,有word,有excel,看着视频,听着音乐,每个程序都要使用CPU和内存,都要上网,都要存硬盘,如果没有一个大管家管着,大家随便用...

2019-09-23 09:46:49 666

原创 【leetcode】55-跳跃游戏【C/C++】

题目如下:解题思路:方法一:首先想到的是从前向后遍历数组,根据当前元素的大小逐一选择跳跃位置,深度搜索+回溯。但是该方法对于大规模数组时间复杂度过高,因为其不存在剪枝的过程,会遍历整个数组的每一种可能。代码如下:class Solution {public: bool canJump(vector<int>& nums) { ...

2019-09-20 16:11:01 179

原创 【leetcode】54-螺旋矩阵【C/C++】

题目如下:解题思路:对于这种螺旋遍历的方法,重要的是要确定上下左右四条边界的位置。初始化时,上边界up就是0,下边界down就是m-1,左边界left是0,右边界right是n-1; 然后进行while循环,先遍历上边界,将所有元素加入结果res,然后上边界下移一位,如果此时上边界大于下边,说明此时已经遍历完成了,直接break。; 之后遍历右边界,将所有元素加入结果res,然...

2019-09-19 13:33:47 174

原创 【leetcode】53-最大子序和【C/C++】

题目如下:解题思路:利用滑动窗口的思想,遍历一遍数组,用一个 total 计数器记录当前窗口的数值,用 res 记录滑动窗口最大值。从头开始遍历数组,每当新加入一个元素,将taotal加上该元素后与该元素值比较大小: 若大于该元素,将当前元素加入滑动窗口;并比较toatal、taotal+nums[]、res值,更新res最大结果值 若小于该元素,只可能有一种情况 total(...

2019-09-19 11:06:40 110

原创 【leetcode】50-Pox(x, n)【C/C++】

题目如下:解题思路:思路一:暴力求解,但是特殊情况超时,诸如“x = 1,n = 2147483647”。代码如下:class Solution {public: double myPow(double x, int n) { double res = 1.0; if(n == 0) return 1; ...

2019-09-18 09:52:49 411

原创 【leetcode】49-字母异位词分组【C++】

题目如下:说明:所有输入均为小写字母;不考虑答案输出的顺序。解题思路:遍历一遍字符串数组,将每个字符串 sort() 排序; 对排序后的字符串,建立map<string,int>索引,其中int值即为结果集中的索引下标; 为首次出现的排序后字符串在结果集中增加对应的索引行; 将之后相同的排序后字符串放入同样索引下标的结果行代码如下:class Soluti...

2019-09-17 16:43:23 153

原创 【C/C++】template 函数模板/类模板

C++模板模板(Template)指C++程序设计语言中的函数模板与类模板,是一种参数化类型机制,是C++泛型编程中不可缺少的一部分。模板就是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型定义为参数,从而实现了真正的代码可重用性。typename关键字有两个用途:1、常见的在模板定义中的模板形参列表,表示一个模板参数是类型参数。等同于使用class。 2、使用模板类内定义...

2019-09-17 15:52:29 957

原创 【C/C++】STL中 hash_map 的调用

注意:1、需要加上头文件#include<ext/hash_map> 2、需要加上名称空间using namespace __gnu_cxx; 3、当hash_map中使用 string 或者 long long 为key时(key为int时不需要),需用户扩展命名空间代码示例:#include<bits/stdc++.h>#include<ext/...

2019-09-17 14:52:28 185

原创 【Mac】Clion编译报错 “wchar .h not found”

问题:Mac上使用Clion编译报错:“wchar .h not found”解决方案:Click:“Tools -> CMake -> ResetCache and Reload Project”

2019-09-17 11:31:31 807 1

原创 【C/C++】类继承中的赋值兼容原则,以及构造与析构

一、类的赋值兼容原则1.1、类型(赋值)兼容性原则的说明:需要基类对象的任何地方,都可以用公有派生类对象代替。通过公有继承,派生类得到了基类中除构造函数和析构函数以外的所有成员。实际上,公有派生类实际具备了基类的所有功能,凡是基类能解决的问题,公有派生类都可以解决。1.2、类型(赋值)兼容性原则可以代替的情况:1)子类对象可以当作父类的对象使用(子类是特殊的父类) 2)子类对象...

2019-09-17 11:05:41 1769

原创 【C/C++】C++中冒号 “ : ” 和双冒号 “ :: ” 的用法

一、冒号 “ : ” 的用法1.1、位域定义结构体内位域的定义,即该变量占几个bit空间typedef struct _XXX{ unsigned char a:4; //位域,a只占4 bit unsigned char c;}XXX;1.2、类构造函数的初始化列表构造函数就是与类同名的函数,它与普通函数的区别在于没有返回类型。在构造函数后面紧跟着冒号加...

2019-09-16 17:14:31 5222

原创 【C/C++】struct结构体声明中的冒号

struct结构体中的“位域”或“位段”有些信息在存储时,并不需要占用一个完整的字节而只需占几个或一个二进制位,如协议包头。因此为了节省存储空间并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。这样就可以把几个不同的对象用固定字节的二进制位域来表示。...

2019-09-16 16:13:10 1463

原创 【C/C++】size_t详解

前言:使用size_t可能会提高代码的可移植性、有效性或者可读性,或许同时提高这三者。在标准C/C++的语法中,只有int、float、char、bool等基本的数据类型,至于 size_t 或 size_type 都是以后的编程人员为了方便记忆所定义的一些便于理解的由基本数据类型的变体类型。一、实现size_t是标准C库中定义的,它是一个基本的与机器相关的无符号整数的C/C + ...

2019-09-16 13:50:53 75945 8

原创 【C/C++】typedef用法详解

typedef 声明,简称 typedef,人们常常使用 typedef 来编写更美观和可读的代码。所谓美观,意指 typedef 能隐藏笨拙的语法构造以及平台相关的数据类型,从而增强可移植性和以及未来的可维护性。本文下面将竭尽全力来揭示 typedef 强大功能以及如何避免一些常见的陷阱。一、typedef的四个用途1.1、用途一:定义一种类型易于记忆的别名,而不只是简单的宏替换。a...

2019-09-16 11:54:39 5438

原创 【C/C++】理解复杂函数声明

理解复杂声明可用的“右左法则”:从变量名看起,先往右,再往左,碰到一个圆括号就调转阅读的方向; 括号内分析完就跳出括号,还是按先右后左的顺序,如此循环,直到整个声明分析完。举例分析:int (*func)(int *p);1、首先找到变量名func,外面有一对圆括号,而且左边是一个*号,这说明func是一个指针;2、然后跳出这个圆括号,先看右边,又遇到圆括号,这说明 (*fu...

2019-09-16 09:07:03 500

转载 【C/C++】STL中哈希表 hash_map 介绍

Background—为什么需要hash_map?用过map吧?map提供一个很常用的功能,那就是提供key-value的存储和查找功能。例如,我要记录一个人名和相应的存储,而且随时增加,要快速查找和修改:岳不群-华山派掌门人,人称君子剑张三丰-武当掌门人,太极拳创始人东方不败-第一高手,葵花宝典...这些信息如果保存下来并不复杂,但是找起来比较麻烦。例如我要找"张三丰"的信息...

2019-09-15 23:07:18 387

原创 【leetcode】48-旋转图像【C++】

题目如下:解题思路:一层层旋转,如下图所示:代码如下:class Solution {public: void rotate(vector<vector<int>>& matrix) { //一圈圈旋转,逐层向内 //x、y代表当前旋转所处的圈,p1、p2代表对应的旋转位置 int ...

2019-09-09 12:37:15 158

原创 【leetcode】47-全排列 II【C++】

题目如下:解题思路:本题相对全排列 I的区别就是要去除重复元素的递归分支。使用布尔型数组 visited[] 记录已在递归中被选选择过的元素,剪枝的条件是:当前元素与同一层中的前一个元素相同,而且前一个元素已经被前一个递归分支选中代码如下:class Solution {public: vector<vector<int>> per...

2019-09-09 10:02:26 323

原创 【leetcode】46-全排列【C/C++】

题目如下:解题思路:递归 + 回溯。代码如下:class Solution {public: vector<vector<int>> permute(vector<int>& nums) { vector<vector<int>> res; int l = nums....

2019-09-06 13:49:08 134

空空如也

空空如也

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

TA关注的人

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