自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 网络编程学习笔记

网络基础协议的概念什么是协议从应用的角度出发,协议可理解为“规则”,是数据传输和数据的解释的规则。假设,A、B双方欲传输文件。规定:第一次,传输文件名,接收方接收到文件名,应答OK给传输方;第二次,发送文件的尺寸,接收方接收到该数据再次应答一个OK;第三次,传输文件内容。同样,接收方接收数据完成后应答OK表示文件内容接收成功。由此,无论A、B之间传递何种文件,都是通过三次数据传输来完成。A、B之间形成了一个最简单的数据传输规则。双方都按此规则发送、接收数据。A、B之间达成的这个相互遵守的.

2021-08-18 13:21:20 511

原创 系统编程学习笔记

基础知识不会的命令可以查看 鸟哥私房菜这本书 或者自带的帮助文档 man 命令ifconfig : 查看 IP 地址,MAC地址可以用 ip 代替,ifconfig已经过时了增加用户 sudo adduser client密码:0000pwd重命名文件mv既可用于改名,也可用于移动mv mytest newtest (如果第二个参数是文件,那么就是改名,如果是目录就是移动至该目录。)kill pid :杀死某个进程killall 服务名:杀死这个服务对应的所有进程创建文件:to

2021-08-18 13:20:36 793

原创 leetcode——面试题0205——链表求和

题目:给定两个用链表表示的整数,每个节点包含一个数位。这些数位是反向存放的,也就是个位排在链表首部。编写函数对这两个整数求和,并用链表形式返回结果。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {pu

2021-07-09 11:15:02 248

原创 leetcode——第208题——前缀树/字典树

题目:Trie(发音类似 “try”)或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补完和拼写检查。请你实现 Trie 类:Trie() 初始化前缀树对象。void insert(String word) 向前缀树中插入字符串 word 。boolean search(String word) 如果字符串 word 在前缀树中,返回 true(即,在检索之前已经插入);否则,返回 false 。boolean startsWi

2021-07-08 21:47:21 165

原创 leetcode——第79题——单词搜索/典型回溯

题目:给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。class Solution {public: bool exist(vector<vector<char>>& board, string word) {

2021-07-08 00:10:44 113

原创 脑图之——apue进程间通信

2021-07-06 20:47:23 106

原创 脑图之——apue概述

2021-07-06 20:45:05 373 3

原创 脑图之——caspp网络编程

2021-07-06 20:42:10 107

原创 leetcode——第10题——正则表达式匹配

题目:给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。‘.’ 匹配任意单个字符‘*’ 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。示例 1:输入:s = “aa” p = “a”输出:false解释:“a” 无法匹配 “aa” 整个字符串。/*正则表达式:字符串匹配动态规划:1、dp[i][j] 表示s在以i结尾的字符串,和p中以j结尾的字符串,是否匹配,匹配为1,不匹配为0由于字符串从

2021-07-02 21:38:23 173

原创 leetcode——第146题——LRU缓存机制

题目:运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。实现 LRUCache 类:LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。void put(int key, int value) 如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字-值」。当缓存容量达到上限时,它应该在写入新数据之前

2021-07-02 09:16:50 164

原创 贪心算法总结

一、基本概述本质:​ 贪心的本质是选择每一段的局部最优,从而达到全局最优。难点:​ 唯一的难点就是如何通过局部最优,推出整体最优。做题方法:​ 毫无套路可言,最好用的策略就是多举几个测试用例,看一下贪心是否合适。大致步骤:将问题分解为若干个子问题找出适合的贪心策略求解每一个子问题的最优解将局部最优解堆叠成全局最优解二、做题第455题 分发饼干一个数组表示 每个小孩对应的胃口一个数组表示 每块饼干对应的尺寸大部分情况下处理两个数组都会想到用两层 for 循环,但是本题中,可

2021-06-20 23:53:51 276 1

原创 二叉树总结点睛

一、二叉树1、常见名词DFS (depth first search ) 深度优先遍历BFS (breadth first search ) 广度优先遍历BST (binary search tree) 二叉搜索树AVL(Adelson-Velsky and Landis) 平衡二叉搜索树heap 堆2、常见分类满二叉树:是一种特殊的完全二叉树。只有度为0的节点和度为2的节点,且度为0的节点在同一层什么是二叉树的度:就是二叉树中 节点和 节点 的线,有

2021-06-20 23:47:53 536 2

原创 回溯算法总结点睛

一、基本概念1、什么是回溯法?又称回溯搜索法,说白了就是一种搜索方式。其实回溯是递归的副产品,只要有递归就会有回溯。回溯函数也可以称之为递归函数。2、回溯法的效率回溯法本质是穷举,因此并不高效可以通过一些剪枝的操作稍微提高一些效率,但仍是比较低效的算法3、回溯法解决的问题经常用来解决以下 5 种问题:* 1)组合问题:**不强调**元素的顺序,N个数里按照一定的规则找出K个数的集合* 2)排列问题:**强调**元素的顺序,N个数按一定的规则全排列,求有多少排列方式* 3)切割问题:一

2021-06-20 23:46:41 3542 1

原创 动态规划总结点睛

终于到这个专题啦 ~~~ 激动的搓手手!一、基础知识动态规划:Dynamic Programming (DP),如果某一问题有很多重叠子问题,实验DP是最有效的因此只要是 当前状态可以根据前面的状态推出来 的题型,就能用动归。动态规划中每一个状态一定是由上一个状态推导出来的,这一点区分与贪心,贪心没有状态推导,而是从局部直接选最优、贪心解决不了动态规划的问题。01、花花讲解要求:最优子结构可以通过把它分解成子问题,然后递归地找到子问题的最优解来得到最优解。重叠子问题子问题是重叠的,这样我们只

2021-06-20 23:44:21 933 1

原创 位运算总结点睛

一、知识储备移位 运算符< <// 示例一:// 这里定义为 1 << nums.size() 的形式,令 n = nums.size()// 其的十进制是 2^n ,二进制就是 第 n 位是1 ,其余为 0 的一串 二进制数,注意这里是从 0 开始数的。memo = vector<vector<int>>(k+ 1, vector<int>(1 << nums.size(), -1));// 示例二:res |= b

2021-06-20 23:42:55 192

原创 leetcode——第3题——最长不含重复字符

题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。/*子字符串:表示得是连续的考察点:1、哈希表 unordered_set2、双指针3、也可以用滑动窗口,滑动窗口其实就是一种双指针。*/class Solution {public: int lengthOfLongestSubstring(string s) { // 因为要不重复,所以首先想到用哈希表,因为字符较多,所以数组不想,又因为不需要与下标关联,所以使用哈希集合足够,

2021-06-10 20:11:34 52

原创 leetcode——第249题——移位字符串分组

题目:给定一个字符串,对该字符串可以进行 “移位” 的操作,也就是将字符串中每个字母都变为其在字母表中后续的字母,比如:“abc” -> “bcd”。这样,我们可以持续进行 “移位” 操作,从而生成如下移位序列:“abc” -> “bcd” -> … -> “xyz”给定一个包含仅小写字母字符串的列表,将该列表中所有满足 “移位” 操作规律的组合进行分组并返回。示例:输入:[“abc”, “bcd”, “acef”, “xyz”, “az”, “ba”, “a”, “z”]

2021-06-10 14:21:35 352

原创 leetcode——第49题——字母异位词分组

题目:给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出:[[“ate”,“eat”,“tea”],[“nat”,“tan”],[“bat”]]说明:所有输入均为小写字母。不考虑答案输出的顺序。/*本题感觉在联系 哈希映射的嵌套关系对内层的处理还是很不容易想到的,使用到了 emplace_back()*/class Solution {

2021-06-10 14:20:17 87

原创 leetcode——第1002题——查找常用字符

题目:给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表。例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,则需要在最终答案中包含该字符 3 次。你可以按任意顺序返回答案。/*1、刚开始懵在了 输入字符串 string注意这里的输入形式是 vector<string> ,而不是 string因此 每个逗号隔开的都是一个字符串咯2、有点机智的处理把比较多个字符串的最小频率,转换成比较第一个和其他然后再其他的处理上

2021-06-09 20:50:42 80

原创 leetcode——第205题——同构字符串

题目:给定两个字符串 s 和 t,判断它们是否是同构的。如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。class Solution {public: // // 解法一:使用 count 来实现的 // bool isIsomorphic(string s, string t) // {

2021-06-08 20:17:26 142 1

原创 leetcode——第290题——单词规律

题目:给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律。这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应规律。class Solution {/*感觉不是很会哎~~需要再多刷一下这个题刚开始我还想判断这个,艾玛呀,这两个字符创的长度肯定不同的嘛!!!字符串的大小就是包含的字符的个数,s 肯定是比 pattern 大的呀 ~~~// if(pattern.size() != s.si

2021-06-08 19:56:33 154 2

原创 阅读笔记之——Unix环境高级编程

Unix/Linux 命令参考[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vZMPCtmo-1623136388128)(C:\Users\lh\AppData\Roaming\Typora\typora-user-images\image-20210608131137566.png)]英文目录POSIX 1003.2 标准可移植操作系统接口(界面)system call interface系统调用接口bourne-again sh

2021-06-08 15:13:29 181 1

原创 阅读笔记之——Linux就该这么学

《Linux 就该这么学》(https://www.linuxprobe.com/basic-learning-03.html)第一章 手动部署一台Linux操作系统1、必备软件VmwareWorkStation 16 ——虚拟机软件RedHatEnterpriseLinux [RHEL] 8 ——8.2版本红帽操作系统用户 root密码 03062、注意事项下载的过程中,使用迅雷下载镜像速度更快第二章 新手必须掌握的Linux命令tree查看当前路径下的文件树

2021-06-08 15:12:39 95 1

原创 阅读笔记之——深入理解计算机系统

第二章2.1 信息的存储位:在计算机的内部和数字设备中,所有的数据都是以二进制数表示的,即0和1的序列。位(bit )由二进制数字(binary digit)而来。每个二进制位只能表示两种状态:0和1。位是计算机中最小的数据单位,一般用逻辑器件的一种状态来表示,例如“断开”或“闭合”。字节:是计算机数据处理的基本单位。1个字节由8个二进制位组成,也就是由两个16进制位组成,通常我们写地址都是按照16进制来写,如一个int类型的变量 a 的值为 0x01234567,这个就是用16进制表示的

2021-06-08 15:11:03 384

原创 leetcode——第315题——树状数组&归并排序 逆序对

题目:计算右侧小于当前元素的个数给定一个整数数组 nums,按要求返回一个新数组 counts。数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。/*使用前缀和的解法,但是需要对原始的数据做一些处理1、反转后的数组,nums 倒叙反转所得,因为倒叙输入才能转换为前置的 前缀和数组2、排序后的数组,排序时重复元素归类为同一个,所以排序后的总元素个数是小于等于原始的数组元素个数的3、频率数组,依次遍历反转后的数组,按照排序数组记录的

2021-06-03 18:03:42 184

原创 leetcode——第307题——树状数组 区域和检索

给你一个数组 nums ,请你完成两类查询,其中一类查询要求更新数组下标对应的值,另一类查询要求返回数组中某个范围内元素的总和。实现 NumArray 类:NumArray(int[] nums) 用整数数组 nums 初始化对象void update(int index, int val) 将 nums[index] 的值更新为 valint sumRange(int left, int right) 返回子数组 nums[left, right] 的总和(即,nums[left] + nums[

2021-06-03 17:50:58 263 2

原创 剑指offer——第51题——数组中的逆序对

题目:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。class Solution {public: int reversePairs(vector<int>& nums) { return split(nums, 0, nums.size() - 1); }private: // 递归实现 分治 int split(vector<int&g

2021-06-02 21:21:32 239

原创 leetcode——第448题——找到所有数组中消失的数字

题目:给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。class Solution {public: vector<int> findDisappearedNumbers(vector<int>& nums) { // 方法一:负数标记 // 第一次写的时候写错了,没加 abs,这肯定错呀,因

2021-06-02 19:23:47 373

原创 leetcode——第523题——连续的子数组和

题目:给你一个整数数组 nums 和一个整数 k ,编写一个函数来判断该数组是否含有同时满足下述条件的连续子数组:子数组大小 至少为 2 ,且子数组元素总和为 k 的倍数。如果存在,返回 true ;否则,返回 false 。如果存在一个整数 n ,令整数 x 符合 x = n * k ,则称 x 是 k 的一个倍数。class Solution {/*1、前缀和2、unordered_map count 函数,返回对应 key 值的元素个数,因为 哈希表中的元素个数唯一,所以如果

2021-06-02 18:55:42 139

原创 leetcode——第493题——翻转对

题目:给定一个数组 nums ,如果 i < j 且 nums[i] > 2*nums[j] 我们就将 (i, j) 称作一个重要翻转对。你需要返回给定数组中的重要翻转对的数量。// 归并排序 = 分治 + 归并// 分治常用 partition 或者是 split/*本题就是用常规的归并排序的套路来完成的只不过需要再归并之前,对 左右两个部分的数组计算一下逆序对儿1、分治,就是把数组分组,每次分成两部分,前面和后面,以 [1,3,2,3,1] 为例 注意分治的思想,

2021-06-02 17:08:37 187

原创 侯捷老师——STL源码剖析

generic programmingGP 泛型编程object orientedOO 面向对象C++ Standard LibraryC++标准库Standard Template LibrarySTL 标准模板库P1 认识headers、版本、重要资源C++标准库中有百分之八十左右都是由 STL组成的常用网站:cplusplus.comcppreference.comgcc.gnu.org建议阅读书籍...

2021-06-02 11:53:03 1145

原创 leetcode——第148题——排序链表

题目:给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。进阶:你可以在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序吗?/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x

2021-06-01 22:19:06 177

原创 leetcode——第338题——比特位计数

题目:给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。class Solution {public: vector<int> countBits(int n) { // 动态规划 // 1、确定 dp[i] 数组的含义:数字 i 的二进制位含有 1 的个数 // 2、确定递推公式 // 如果 i&1

2021-05-31 23:05:29 69 1

原创 leetcode——第136题——只出现一次的数字

题目:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?class Solution {/*时间复杂度O(n) 空间复杂度O(1)关键词:仅有一个出现一次的数字位运算真的又爱又恨,骚里骚气的让人想不到呢~~~利用异或的性质:x ^ x = 0 出现两次x ^ 0 = x 出现一次异或运算满足交换律*/public: int singleNumbe

2021-05-31 22:33:42 49

原创 leetcode——第190题——颠倒二进制位

颠倒给定的 32 位无符号整数的二进制位。class Solution {/*使用二进制的算术左移和右移*/public: uint32_t reverseBits(uint32_t n) { uint32_t ans = 0; for(int i = 0; i < 32; ++i) { // n & 1 这句话表示 取出 n 的最后一位 ans <<=

2021-05-31 22:19:19 49

原创 leetcode——第461题——汉明距离

题目:两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。给你两个整数 x 和 y,计算并返回它们之间的汉明距离。class Solution {/*1、汉明距离就是求二进制位中有几个不同的位数2、所以先把两个数 做 异或 运算3、然后对异或的结果统计有多少个 1. res & 1 表示取出 res 的最后一位*/public: int hammingDistance(int x, int y) { int res =

2021-05-31 22:14:36 61

原创 leetcode——第342题——4的幂

题目:给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4xclass Solution {public: bool isPowerOfFour(int n) { // 法一::自己写的笨笨的解法 // if(n == 1) return true; // if(n < 4) return false;

2021-05-31 21:48:40 156

原创 leetcode——第231题——2的幂

题目:给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。class Solution {public: bool isPowerOfTwo(int n) { // 注意三种写法都是对的, // 注意运算符的优先级,这里一定要对 (n&(n-1)) 加圆括号啦~~~ // if(n > 0

2021-05-31 21:47:44 252

原创 leetcode——第162题——寻找峰值

题目:峰值元素是指其值大于左右相邻值的元素。给你一个输入数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。你可以假设 nums[-1] = nums[n] = -∞ 。class Solution {/*这两种方法都是使用了二分法的 左闭右开 [left, right)nums[i] > nums[i + 1],主要的精髓就在这句话,为了找到峰值,就需要考虑是处于局部升序还是局部降序当满足这个说明处于 局部降序,那么就需要

2021-05-29 15:43:43 71

原创 建立我的个人博客

写在前面GitHub: 是一个面向开源及私有软件项目的托管平台; 是一个代码托管云服务网站,帮助开发者存储和管理其项目源代码,且能够追踪、记录 并控制用户对其代码的修改; 甚至你可以简单粗暴的把它当作一个网盘,用来存储任何东西。 因为只支持git作为唯一的版本库格式进行托管,故名GitHub。Git: Git只是一个命令行工具,一个分布式版本控制系统。 正是它在背后管理和跟踪你的代码历史版本,好比一个时光机,让你在代码出错时不至于手 忙脚乱,能快速回退之前的历史版本。 用

2021-05-28 19:32:58 177

空空如也

空空如也

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

TA关注的人

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