自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 资源 (1)
  • 收藏
  • 关注

原创 LeetCode #5 最长回文子串

给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。https://leetcode-cn.com/problems/longest-palindromic-substring/一、动态规划对于动态规划切记要发现其状态转移 string longestPalindrome(string s) { const int n = s.length();

2022-01-26 21:53:49 400

原创 Qt 学习

#ifndef OWN_STACKEDVIEW_H#define OWN_STACKEDVIEW_H#include <QStackedWidget>#include <QVariant>class QPainter;class QWidget;class QPropertyAnimation;// https://github.com/NoHearting/MySelfQQ_v2/blob/419bf3981ccf0e0c9f4c8bf7d6330e85bea.

2021-10-21 22:58:26 263

原创 LeetCode #44 通配符匹配

给定一个字符串(s) 和一个字符模式(p) ,实现一个支持'?'和'*'的通配符匹配。'?' 可以匹配任何单个字符。'*' 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。输入:s = "adceb"p = "*a*b"输出: true解释:第一个 '*' 可以匹配空字符串, 第二个 '*' 可以匹配字符串 "dce".https://leetcode-cn.com/problems/wildcard-matching/一、动态规划动态...

2021-10-16 16:03:03 175

原创 LeetCode #41 缺失的第一个正数

给你一个未排序的整数数组nums,请你找出其中没有出现的最小的正整数。请你实现时间复杂度为O(n)并且只使用常数级别额外空间的解决方案。(如果没有这个条件,可以使用排序)输入:nums = [3,4,-1,1]输出:2一、哈希表首先先明确对于有N个元素的数组,找到没有出现的最小正整数。其意味着在[0,N-1]位置上需要有[1,N]这几个数。如果这些数都存在,那么最小正数就是N+1。若某些值不存在就需要通过位置[0, N-1]和[1,N]之间的映射关系进行查询。哈希表的思路就是...

2021-10-13 21:11:04 291

原创 LeetCode #31 下一个排列

实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列(即组合出下一个更大的整数)。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。输入:nums = [1,1,5]输出:[1,5,1]一、两遍扫描二、循环遍历使用这个方法是因为我没有发现正确的规律,仅仅认为找到最靠右边的小数即可。因此使用了两层循环直接找最靠右的数。替换之后再进行排序得到最终的结果。这里我并没有看到其实应该还存在一个条件

2021-10-10 10:09:53 60

原创 C++ template meta-programming 一步步实现快速排序

参考链接:https://github.com/MagicBowen/tlp/tree/master/include/tlp、https://www.jianshu.com/p/b56d59f77d53具体代码实现:https://github.com/pisuto/tinySTLLearning/tree/master/Test/TemplateMetaProgramLearning一、数值结构在实现快速排序之前,首先是定义存储数据的类型结构。在模板元编程中,每一个值其实是使用一个...

2021-10-04 11:56:10 193

原创 LeetCode #179 最大数

给定一组非负整数nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。输入nums = [3,30,34,5,9]输出:"9534330"一、...

2021-09-28 21:10:42 65

原创 LeetCode #169 多数元素

给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于⌊ n/2 ⌋的元素。可以假设数组是非空的,并且给定的数组总是存在多数元素。输入:[3,2,3]输出:3https://leetcode-cn.com/problems/majority-element/一、投票法根据自己的理解,设定一个cnt用于计数,一个val用于保存众数。那么对于一个在数组中个数大于一半的众数来说,其计票为+1,而其余数都为-1。经过加减之后cnt的值一定是大于0。而一开始我们...

2021-09-28 21:07:31 46

原创 Leetcode #27 移除元素

给你一个数组nums和一个值val,你需要原地移除所有数值等于val的元素,并返回移除后数组的新长度。输入:nums = [3,2,2,3], val = 3输出:2, nums = [2,2]https://leetcode-cn.com/problems/remove-element/一、快慢指针使用快指针跳过相同值的元素,再进行赋值。代码: int removeElement(vector<int>& nums, int val...

2021-09-08 21:37:38 70

原创 Redis源码阅读 动态字符串实现

源码链接:https://github.com/redis/redis一、sds.hredis实现动态字符串的方法是定义一个结构体分别指明字符串长度、分配长度、类型和字符数组,其中类型用来表示不同长度的结构,如下:/* Note: sdshdr5 is never used, we just access the flags byte directly. * However is here to document the layout of type 5 SDS strings. */..

2021-09-04 22:03:25 128

原创 vcpkg——在visual studio下更好使用c++库

安装链接:https://github.com/microsoft/vcpkg使用vcpkg使得原本在win下vs引用第三方库难的问题得到极大的改善。// 一些安装命令git clone https://github.com/microsoft/vcpkg.\vcpkg\bootstrap-vcpkg.bat.\vcpkg\vcpkg install [packages to install].\vcpkg\vcpkg search [search term].\vcpkg\.

2021-09-04 14:27:53 638

原创 LeetCode #58 最后一个单词的长度

给你一个字符串s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。单词是指仅由字母组成、不包含任何空格字符的最大子字符串。输入:s = "Hello World"输出:5https://leetcode-cn.com/problems/length-of-last-word/一、直接通过while循环去除空字符串,然后计算不为空的单词部分直到再次碰到空格。代码:int lengthOfLastWord(string s) { ...

2021-08-25 22:31:44 111

原创 LeetCode #15 三数之和

给你一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]https://leetcode-cn.com/problems/3sum/一、双指针法注意不能加入相同的组合,通过排序以及相同值去除可以有效排除相同的组合。代码:vec...

2021-08-22 20:24:08 36

原创 LeetCode #16 最接近的三数之和

给定一个包括n 个整数的数组nums和 一个目标值target。找出nums中的三个整数,使得它们的和与target最接近。返回这三个数的和。假定每组输入只存在唯一答案。输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。https://leetcode-cn.com/problems/3sum-closest/一、双指针法这里采用类似于“三数之和”的方法,使用双指针...

2021-08-22 17:54:58 50

原创 LeetCode #13 罗马数字转整数

罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做II,即为两个并列的 1。12 写做XII,即为X+II。 27 写做XXVII, 即为XX+V+II。通常...

2021-08-11 20:30:04 51

原创 LeetCode #12 整数转罗马数字

罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做II,即为两个并列的 1。12 写做XII,即为X+II。 27 写做XXVII, 即为XX+V+II。通常...

2021-08-11 20:01:07 56

原创 LeetCode #11 盛最多水的容器

给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画 n 条垂直线,垂直线 i的两个端点分别为(i,ai) 和 (i, 0) 。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。并且,你不能倾斜容器。输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为49。https://leetcode-c...

2021-08-11 19:50:18 62

原创 LeetCode #9 回文数

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。输入:x = 121输出:truehttps://leetcode-cn.com/problems/palindrome-number/一、字符串法最简单的方法就是将数字转换成字符串,这样既避免了超出INT_MAX的问题,而且使用起来也简单易懂。代码:bool isPalindrome(

2021-08-04 21:23:43 50

原创 LeetCode #4 寻找两个正序数组的中位数

给定两个大小分别为 m 和 n 的正序(从小到大)数组nums1 和nums2。请你找出并返回这两个正序数组的 中位数 。输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2https://leetcode-cn.com/problems/median-of-two-sorted-arrays/...

2021-07-22 19:09:35 292

原创 LeetCode #10 正则表达式匹配

https://leetcode-cn.com/problems/regular-expression-matching/给你一个字符串s和一个字符规律p,请你来实现一个支持 '.'和'*'的正则表达式匹配。'.' 匹配任意单个字符'*' 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖整个字符串s的,而不是部分字符串。示例 :输入:s = "ab" p = ".*c"输出:true一、递归法2.1 当前主串字符和模式串字符匹配,那么分为三种情况:...

2021-07-19 20:07:32 159

原创 LeetCode #53 最大子序和

给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组[4,-1,2,1] 的和最大,为6 。https://leetcode-cn.com/problems/maximum-subarray/一、动态规划动态规划的难点就在于找到对应的算法表达式,需要积累经验。若输入数组的长度是n,那么我们就是要找出区间在[0,n)内的子数组[i,j]最...

2021-07-14 19:45:05 87

原创 C/C++ 知识点记录

1、零长数组参考链接:http://gcc.gnu.org/onlinedocs/gcc-4.1.1/gcc/Zero-Length.html#Zero-Lengthstruct line { int length; char contents[0];};struct line *thisline = (struct line *) malloc (sizeof (struct line) + this_length);thisline->length = this_le..

2021-03-23 20:24:51 98

原创 网络编程 4、libevent简易聊天室

libevent简易聊天室参考链接:服务器:/* * The MIT License (MIT) * Copyright (c) 2011 Jason Ish * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to de.

2021-03-18 20:02:11 224

原创 网络编程 3、应用Reactor模式的简单epoll服务器

libevent雏形参考链接:https://github.com/aceld/libevent/blob/master/32_epollde_fan_ying_dui_mo_shi_shi_xian.md代码及注释如下:#include <stdlib.h>#include <stdio.h> #include <stdio.h>#include <sys/socket.h>#include <sys/epoll.h>

2021-02-09 14:43:48 159 1

原创 网络编程 2、简单客户端

简单客户端参考链接:https://github.com/aceld/libevent/blob/master/26-%E7%AE%80%E5%8D%95%E7%9A%84epoll%E6%9C%8D%E5%8A%A1%E5%99%A8.md编译及运行参考上一篇 简单服务器 编译。#include <stdio.h>#include <stdlib.h>#include <string.h>#include <string.h>..

2021-02-09 14:37:02 120

原创 网络编程 1、简单服务器epoll实现

简单服务器参考链接:https://github.com/aceld/libevent/blob/master/26-%E7%AE%80%E5%8D%95%E7%9A%84epoll%E6%9C%8D%E5%8A%A1%E5%99%A8.md编译及执行操作。#编译及运行gcc server.c -o server./server代码带有注释,参考注释即可。#include <stdio.h>#include <stdlib.h>#inclu..

2021-02-09 14:33:04 138

原创 C++ 简易按键精灵制作

简易按键精灵制作参考链接:https://docs.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-sendinput?redirectedfrom=MSDN、https://www.fluentcpp.com/2018/12/28/timer-cpp/待续...// autopress.cpp : This file contains the 'main' function. Program execution beg..

2021-01-15 17:02:04 1926

原创 C++ 字符串模糊匹配

C++ 字符串模糊匹配参考链接:https://github.com/tajmone/fuzzy-search,https://www.forrestthewoods.com/blog/reverse_engineering_sublime_texts_fuzzy_match/对原有的C语言代码进行了C++简单改写,使用std::string替换了char字符详细解读,待续#pragma once#include <string>#include <vector

2020-12-23 15:16:44 3373

原创 VS Code + GTags 加快索引

大项目中使用VS Code配合GTags实现快速索引参考链接:https://blog.csdn.net/danxibaoxxx/article/details/81289651、https://zhuanlan.zhihu.com/p/36279445、https://www.cnblogs.com/hgwang/p/10279023.htmlGTags下载链接:http://adoxa.altervista.org/global/在以上下载链接中下载自己使用的操作系统的版本,然后直.

2020-11-17 19:17:50 4797

原创 Xshell下载与安装

Xshell下载与安装下载Xshell和Xftp,一般它们都是配套下载,从官网获得。下载链接:https://www.netsarang.com/zh/all-downloads/当然,使用免费的版本即可,点击当前界面下的“家庭/学校免费”进入。安装完成后,按照以下教程进行填写安装与配置:https://blog.csdn.net/ljw_jiawei/article/details/80377714只要注意输入自己的IP和密码即可。为了安全起见,可以设置密钥登入的方式.

2020-10-21 23:09:18 3768

原创 C++ STL basic_string.h

全部代码(待续...)#pragma once// 字符串类型#include <iostream>#include <cassert>#include "iterator.h"#include "memory.h"#include "functional.h"namespace tinySTL { template<typename CharType> struct char_traits { using char_type =

2020-09-29 19:57:34 712

原创 C++ STL util.h

全部代码#pragma once// util.h中主要包括一些通用工具,包括 move, forward, swap 等函数,以及 pair 等#include "type_traits.h"namespace tinySTL { // move // 如果想取得对某一对象执行移动操作,不要将其声明为常量,因为针对常量对象执行的 // 移动操作将变换为复制操作 template<typename T> remove_reference_t<T>&amp

2020-09-29 19:55:36 1344

原创 C++ STL uninitialized.h

全部代码#pragma once#include "algobase.h"#include "construct.h"#include "iterator.h"#include "type_traits.h"#include "util.h"namespace tinySTL { // uninitialize_copy 把[first, last)上的内容复制到以result为起始处的空间,返回复制结束的位置 template<typename InputIter, ty

2020-09-29 19:54:16 282

原创 C++ STL type_traits.h

全部代码#pragma once#include <type_traits> // 可以继续添加namespace tinySTL { // enable_if template<bool B, typename T = void> struct enable_if {}; template<typename T> struct enable_if<true, T> { using type = T; }; temp

2020-09-29 19:52:32 325

原创 C++ STL iterator.h

全部代码#pragma once#include "type_traits.h"namespace tinySTL { // 五种迭代器类型 struct input_iterator_tag {}; struct output_iterator_tag {}; struct forward_iterator_tag : public input_iterator_tag {}; struct bidirectional_iterator_tag : public forward_

2020-09-29 19:51:26 347

原创 C++ STL functional.h

全部代码#pragma once// 包含函数对象和哈希函数 functor仿函数namespace tinySTL { // 定义一元函数的参数类别和返回值型别 template<typename Arg, typename Result> struct unarg_function { using argument_type = Arg; using result_type = Result; }; // 二元函数 template<typenam

2020-09-29 19:50:34 384

原创 C++ STL construct.h

全部代码#pragma once#include <new>#include "type_traits.h"#include "iterator.h"namespace tinySTL { // construct template<typename T> void construct(T* p) { ::new((void*)p) T(); } template<typename T1, typename T2> void co

2020-09-29 19:49:24 247

原创 C++ STL allocator.h

全部代码#pragma once#include "alloc.h"namespace tinySTL { template <typename T, typename Alloc> class allocator { public: using value_type = T; using pointer = T*; using const_pointer = const T*; using reference

2020-09-29 19:47:54 271

原创 C++ STL alloc.h

全部代码#pragma once#include <new>#include <cstdio>namespace tinySTL { // 4 = sizeof FreeList union FreeList { union FreeList* next; char data[1]; }; // 为了便于管理,二级空间配置器在分配的时候都是以8的倍数对齐。也就是说 // 二级配置器会将任何小块内存的需求上调到8的倍数处(例如:要7个字节,会 /

2020-09-29 19:46:46 290

原创 C++ STL algobase.h

全部代码#pragma once#include <cstring>#include "util.h"#include "iterator.h"namespace tinySTL { template<typename T> const T& max(const T& lhs, const T& rhs) { return lhs < rhs ? rhs : lhs; } template<typename T,

2020-09-29 19:45:18 484

cmdquery.7z

cmdquery.7z

2021-02-09

空空如也

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

TA关注的人

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