自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

享受当下

对未来最大的慷慨,就是把一切都献给现在。

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

原创 Linux进程管理-kill

linux进程管理kill命令的简单使用

2023-03-08 08:00:46 175 1

原创 Linux进程管理-常见信号

Linux进程管理中的常见信号

2023-03-08 07:47:03 154

原创 Linux进程管理-ps

Linux进程管理ps命令的简单使用

2023-03-08 07:39:45 177

原创 Linux进程管理-top

linux进程管理top命令基本操作

2023-03-08 07:19:22 271

原创 C++中对象调用成员函数this指针的作用

C++中对象调用成员函数this指针的作用

2023-02-12 21:09:11 389

原创 Windows中使用python科学包matplotlib画图设置宋体和Times New Roman体

python科学包matplotlib画图设置宋体和Times New Roman体from matplotlib import rcParamsconfig = { "font.family": 'serif', # 衬线字体 "font.size": 12, # 相当于小四大小 "font.serif": ['SimSun'], # 宋体 "mathtext.fontset": 'stix', # matplotlib渲染数学字体时使用的字体,和Times New

2022-04-14 14:53:22 1423

原创 MacBook Air M1配置java开发环境 Maven + IDEA

MacBook Air M1配置java开发环境 Maven + IDEA1. JDK配置目前 Zulu JDK 支持 M1芯片,下载 Download Azul Zulu Builds of OpenJDK下载后点击安装,按照步骤进行,完成后,在控制台输入java -versionopenjdk version "17.0.1" 2021-10-19 LTSOpenJDK Runtime Environment Zulu17.30+15-CA (build 17.0.1+12-LTS)Open

2021-12-05 23:51:35 6068 1

原创 MacBook Air M1 + MacTex + VS Code的LaTex教程

MacBook Air M1 + MacTex + VS Code的LaTex教程参考博文:https://zhuanlan.zhihu.com/p/107393437分为6步:1. 安装MacTex:MacTex一键下载,轻松完成环境配置,整体大小约为4G请配合WI-FI食用。下载链接:https://tug.org/mactex/mactex-download.html2. 安装VS Code:VS Code是很实用的编辑器,而且有很多插件(强烈推荐background)。支持MacOS/Wi

2021-12-05 19:01:29 8220 3

原创 计算机相关竞赛——适合个人的赛事

1. 程序设计国外:TopCoder Open, Google Code Jam, Facebook Hacker Cup。国内:阿里天池,百度之星,微软编程之美。2. 大数据Kaggle,阿里天池,百度飞桨。

2021-10-09 17:45:52 2108

原创 C++单例模式

C++单例模式单例模式是最广泛使用的设计模式之一,目的是保证一个类只有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。该模式很多场景都会用到,比如鼠标类yi'h'ban...

2021-06-27 21:52:36 198

原创 AcWing动态规划——线性DP、区间DP、计数类DP

AcWing动态规划——线性DP、区间DP线性DP:是指递推方程有明显的线性关系的,可能是一维线性也可能是二维的。题目:数字三角形:动态规划时间复杂度:状态数量 * 转移计算量代码:最长上升子序列:怎么把最大序列保存下来?最长公共子序列:状态计算的划分依据:以字符串a[i]和b[j]是否包含在子序列当中作为划分依据。编辑距离:区间DP:状态表示的时候一般表示的是某一个区间。石子合并:...

2021-06-27 07:38:41 283

原创 AcWing动态规划-背包问题

动态规划-AcWing背包问题:容量为V的背包,N个物品(每个问题体积vi,权重wi),在背包能装得下的前提下,问总权值最大为多少?动态规划思考过程:01背包代码:原题链接:01背包问题初始版:优化版:完全背包:原题链接:完全背包问题初始版代码(复杂度较高):优化版代码:优化为2维:优化为1维:多重背包:原题链接:多重背包问题初始版:优化版:由上得知,无法使用完全背包的方法优化多重背包,使用二进制优化方法

2021-06-24 06:17:59 128

原创 基本TCP套接字编程相关函数(记录)

基本TCP套接字编程相关函数下图为TCP客户/服务器程序的相应套接字函数:

2021-06-15 21:05:45 129 2

原创 套接字编程——IP地址转换函数

有两组地址转换函数,他们在ASCII字符串(这是人们偏爱使用的格式,比如用点分十进制字符串表示IPv4地址,十六进制表示IPv6地址)与网络字节序的二进制值(这是存放在套接字地址结构中)

2021-06-15 16:40:53 366

原创 套接字编程——字节操作函数

套接字编程——字节操作函数操作多字节字段的函数有两组:名字以b(表示字节)开头的第一组函数起源于4.2BSD,几乎所有现今支持套接字函数的系统仍然提供它们。

2021-06-10 18:11:38 116

原创 套接字编程——字节排序函数

套接字编程——字节排序函数1. 小端字节序和大端字节序主机字节序:多于一个字节的数据类型(多字节数据类型)在内存中的存放顺序叫主机字节序。最常见的字节序有两种:小端字节序和大端字节序。...

2021-06-10 17:48:49 101

原创 套接字编程——值-结果参数

套接字编程——值-结果参数我们已经知道,当把套接口地址传递给套接口函数时,总是通过指针传递的,即传递的是一个指向结构的指针。结构的长度也作为参数来传递,其传递的方式取决于结构的传递的方向:从进程到内核,还是从内核到进程。...

2021-06-10 17:09:07 152

原创 套接字地址结构

套接字地址结构大多数套接字函数需要一个指向套接字地址结构的指针作为参数。每个协议定义有属于自己的套接字地址结构,均以“sockaddr”开头

2021-06-10 16:42:00 288

原创 C++多态、重载、覆盖、隐藏

C++多态、重载、覆盖、隐藏1. 多态在基类中定义一个虚函数,然后在派生类中又定义一个同名,同参数表的函数,这就是多态。多态采用了动态绑定技术。

2021-06-10 11:25:47 423 3

原创 C++中struct和union的区别

(1) 二者都是由不同的数据类型成员组成(否则也不需要定义这俩),但在任何同一时刻, 结构体存放所有的成员变量, 而共用体只存放一个被选中的成员。(2)对于共用体的不同成员赋值,将会对其他成员重写, 原来成员的值就不存在了, 而对于结构体的不同成员赋值是互不影响的。比如:...

2021-06-09 10:58:28 481

原创 C++智能指针原理

C++智能指针1. 智能指针原理采用C++ Primer Plus中作者引出智能指针的方式进行说明,感觉超好。首先看2个函数://函数1void remodel(std::string & str){ std::string * ps = new std::string(str); ... str = ps; return;}//函数2void remodel(std::string &str){ std::string * p

2021-06-08 22:39:16 903 8

原创 刷题之路-汇总表

刷题之路 编号 原题链接 个人博客题解 1 LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置 传送门 2 LintCode 159. 寻找旋转排序数组中的最小值 传送门 3 LeetCode 33. 搜索旋转排序数组 传送门 4 LeetCode 1. 两数之和 传送门 5 LeetCode 23. 合并K个升序链表 传送门 6 LeetCode 21. 合并两个有序链表 传送门

2021-06-07 16:05:02 116

原创 LeetCode 94. 二叉树的中序遍历

LeetCode 94. 二叉树的中序遍历/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr)

2021-06-07 08:06:18 48

原创 LeetCode 121. 买卖股票的最佳时机

LeetCode 121. 买卖股票的最佳时机代码实现:class Solution {public: int maxProfit(vector<int>& prices) { int minPrice = 1e9, maxProfit = 0; for (auto price : prices) { maxProfit = max(maxProfit, price - minPrice);

2021-06-05 09:02:10 59

原创 LeetCode 85. 最大矩形

LeetCode 85. 最大矩形解题思路:针对矩阵中的每个点,计算以它为矩形右下角的面积。面积的计算,宽度的计算使用一个left二维数组迭代统计计算,高度的计算使用了单调栈,类似LeetCode 85. 最大矩形。代码实现:class Solution {public: int maximalRectangle(vector<vector<char>>& matrix) { if (0 == matrix.size()) return 0;

2021-06-04 09:04:43 81

原创 腾讯C++面经总结2021

腾讯C++面经总结20211、腾讯一面,原文链接:[天坑专业转码春招回忆](https://www.nowcoder.com/discuss/667949?source_id=discuss_experience_nctrack&channel=-1)一、 struct和union的区别1.1.1 二者都是由不同的数据类型成员组成(否则也不需要定义这俩),但在任何同一时刻, 结构体存放所有的成员变量, 而共用体只存放一个被选中的成员。(2)对于共用体的不同成员赋值,将会对其他成员重写, 原来

2021-06-02 23:59:41 547 3

原创 LeetCode 84. 柱状图中最大的矩形

LeetCode 84. 柱状图中最大的矩形使用单调栈实现O(n)复杂度求每根柱子高度对应矩形的左右边界,这是自己头一回接触单调栈,代码思路参考了LeetCode官方题解。代码实现:class Solution {public: int largestRectangleArea(vector<int>& heights) { if (0 == heights.size()) return 0; int n = heights.size()

2021-06-02 09:18:28 74

原创 LeetCode 79. 单词搜索

LeetCode 79. 单词搜索矩阵上的深度优先搜索DFS。代码实现:class Solution {private: int dx[4] = {0, 0, -1, 1}, dy[4] = {-1, 1, 0, 0};public: bool dfs(vector<vector<char>>& board, string tmpword, string word, int i, int j, vector<vector<int>

2021-05-31 12:20:31 51

原创 LeetCode 78. 子集

LeetCode 78. 子集代码实现:class Solution {public: void dfs(vector<vector<int>>& res, vector<int>& nums, vector<int>& subset, int start) { res.push_back(subset); if (start == nums.size()) { r

2021-05-31 08:13:23 56

原创 LeetCode 76. 最小覆盖子串

LeetCode 76. 最小覆盖子串使用滑动窗口,解题思路参考了:https://www.cnblogs.com/grandyang/p/4340948.html代码:class Solution {public: string minWindow(string s, string t) { string res = ""; unordered_map<char, int> letterCnt;//t中字符和其对应出现的次数的映射

2021-05-30 08:42:37 68 1

原创 LintCode 375.克隆二叉树

LintCode 375.克隆二叉树克隆的前提是遍历,遍历二叉树可以使用分治递归的方法。代码实现:/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int val) { * this->val = val; * this->left = this->

2021-05-23 22:18:16 64

原创 LeetCode 72. 编辑距离

LeetCode 72. 编辑距离使用动态规划代码实现:class Solution {public: int minDistance(string word1, string word2) { vector<vector<int>> dp(word1.size() + 1, vector<int>(word2.size() + 1, 0));//初始化 for (int i = 0; i < word1.siz

2021-05-23 08:50:48 84

原创 LeetCode 70. 爬楼梯

LeetCode 70. 爬楼梯解题思路:使用动态规划,类似于不同路径那道题,属于计数型动态规划。不同路径那种坐标型的动态规划,当前第i行第j列的方案树值取决于上一行和前一列各自贡献的加和。这道题,dp[i]只能从dp[i - 1]和dp[i - 2]过来,所以状态转移方程就是:dp[i] = dp[i - 1] + dp[i - 2]官方解答:注:要爬n个台阶,dp一开始要开n + 1大小。最后一个状态为dp[n],而非之前的dp[n -1]。下面给出两种代码实现,一种是普通的动规实现,另一种使

2021-05-19 23:15:20 55

原创 LeetCode 64. 最小路径和

LeetCode 64. 最小路径和解题思路:属于坐标行动态规划。首先开一个二维的数组dp[m][n],dp[i][j]代表到第i行第j列为止的最小路径和。每个位置最小的路径和依赖于它的上一行和它的前一列,所以状态转移方程:dp[i][j] = min(dp[i - 1][j], dp[i][j - 1]) + grid[i][j];代码实现:class Solution {public: int minPathSum(vector<vector<int>>&amp

2021-05-19 22:37:36 46

原创 LeetCode 62. 不同路径

LeetCode 62. 不同路径解题思路:属于计数型的动态规划,即计算方案数目的题型。这也是一道非常典型的坐标型动态规划题,之前在LintCode上做过,可能这是第四回做了,一看到之后立马就想到了动规,也就没有想别的方法。代码实现:class Solution {public: int uniquePaths(int m, int n) { //初始化 vector<vector<int>> dp(m, vector<int&

2021-05-19 21:58:29 51

原创 LeetCode 56.合并区间

LeetCode 56.合并区间解题思路:参考了LeetCode官方的解答,基本思路就是先对intervals排序,排序之后intervals中每个数组[start, end]之间是连续的。此时我们看每个数组[start_i, end_i]中的start_i与前面的end相比,如果小于前一个的end,那么该[start_i, end_i],应该被合并区间[start, max(end, end_i)]中。代码实现:class Solution {public: vector<vec

2021-05-19 21:30:57 57

原创 LeetCode 55.跳跃游戏

LeetCode 55.跳跃游戏之前在LintCode做过一遍,这又一遍啦~动态规划的思路:初始化一个bool数组dp[n],dp[i]代表能否到达当前位置,true为能到达。对于dp[i]而言,前面第j个位置如果能到达i的话,需要满足:dp[j] == true && j + nums[j] >= i,也就是j这个位置首先能到,然后从j这个位置能跳到i。之前用的动态规划,所以这次一上来就用动态规划做了一遍。然后看大家在LeetCode上的答案讨论,看到一个贪心的做法,很直接了

2021-05-19 20:40:42 93 1

原创 LeetCode 53. 最大子序和

LeetCode 53. 最大子序和解题思路:使用动态规划。开一个状态数组dp[n],dp[i]代表到i为止的最大子序和。考虑dp[i - 1]和dp[i]之间的关系,即已知到第i - 1为止的最大子序和,如何得到第dp[i]。转移关系为:dp[i] = max(dp[i - 1] + nums[i], nums[i])前面的子序和如果是负数的话,加上当前nums[i]会造成子序和变小,此时dp[i]直接为当前nums[i]。代码实现上,给出了普通的动态规划实现,和使用滚动数组优化的代码实现。/

2021-05-19 19:57:46 61

原创 LeetCode 49. 字母异位词分组

LeetCode 49. 字母异位词分组解题思路:同一组字母异位词,因为每个字母异位词都具有相同的字母,所以可以使用将每个字母异位词排序,排序之后同一组的字母异位词都是一样的。将排序后的词作为hashmap的键,将所有同一组的字母异位词作为该hashmap的值。可以直接看下面的代码,立马就明白了。代码实现:class Solution {public: vector<vector<string>> groupAnagrams(vector<string>

2021-05-19 18:06:04 49

原创 LeetCode 48.旋转图像

LeetCode 48.旋转图像解题思路:参考了leetcode官方的题解。最简单的方式是借助辅助的数组,将原数组中内容按照旋转规律放入辅助数组内,最后再将辅助数组中的内容放回原数组中。注:只要返回的结果是原数组,就认为是对原数组进行了修改。像这里利用辅助数组,之后将数值深度拷贝到原数组中就可以。但不能拷贝引用(浅拷贝),比如最后原数组内容不是数值上的拷贝辅助数组,而是辅助数组的引用,这样的话,也不算修改了原数组。除了上面借助辅助数组的方式实现原地旋转,还可以通过翻转实现。对原数组先水平翻转,再主对

2021-05-19 17:30:49 62

空空如也

空空如也

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

TA关注的人

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