C++
瑾明达2号
Happy cooperation
展开
-
47. 全排列 II
https://leetcode-cn.com/problems/permutations-ii/solution/quan-pai-lie-ii-by-leetcode-solution/借鉴一下官方的解答,非常完美,以备欣赏:class Solution { vector<int> vis;public: void backtrack(vector<int>& nums, vector<vector<int>>& a转载 2021-03-31 11:50:15 · 89 阅读 · 0 评论 -
[编程题]万万没想到之聪明的编辑
我叫王大锤,是一家出版社的编辑。我负责校对投稿来的英文稿件,这份工作非常烦人,因为每天都要去修正无数的拼写错误。但是,优秀的人总能在平凡的工作中发现真理。我发现一个发现拼写错误的捷径:三个同样的字母连在一起,一定是拼写错误,去掉一个的就好啦:比如 helllo -> hello两对一样的字母(AABB型)连在一起,一定是拼写错误,去掉第二对的一个字母就好啦:比如 helloo -> hello上面的规则优先“从左到右”匹配,即如果是AABBCC,虽然AABB和BBCC都是错误拼写,应该优原创 2021-03-23 14:38:00 · 65 阅读 · 0 评论 -
《统计学习方法》C++实现kd tree
参考:https://www.cnblogs.com/90zeng/p/kdtree.html作者写的非常好,我只是改动成了我习惯的格式,稍许小改动,感谢作者#include <iostream>#include <vector>#include "kd_tree.hpp"using namespace std;int main(){ int data[6][2] = {{2,3},{5,4},{9,6},{4,7},{8,1},{7,2}}; v转载 2020-12-16 16:09:20 · 302 阅读 · 0 评论 -
《统计学习方法》感知机学习算法对偶形式C++实现
部分函数采用一般形式的文件中的函数https://blog.csdn.net/weixin_43087913/article/details/111244856main.cpp#include <iostream>#include <vector>#include <cmath>#include <string.h>#include "perceptron.h"#include "perceptron2.h"using namespace s原创 2020-12-16 10:30:32 · 85 阅读 · 0 评论 -
《统计学习方法》感知机学习算法原始形式C++实现
理论知识参考《统计学习方法》第二版第二章main.cpp#include <iostream>#include <vector>#include "perceptron.h"using namespace std;int main(){ vector<double> w; double b; vector<vector<double>> x; vector<int> y; do原创 2020-12-16 08:36:13 · 164 阅读 · 0 评论 -
1534. 统计好三元组
class Solution {public: int countGoodTriplets(vector<int>& arr, int a, int b, int c) { int ans = 0, n = arr.size(); for (int j = 1; j < n; j++) { for (int k = j + 1; k < n; k++) {原创 2020-12-14 23:16:16 · 79 阅读 · 0 评论 -
Ubuntu服务器安装Boost运行asio示例程序
安装Boost1.7.3参考官网:https://www.boost.org/doc/libs/1_74_0/more/getting_started/unix-variants.html#link-your-program-to-a-boost-library安装完成后编写main.cpp服务端文件:参考官网:Boost/boost_1_74_0/doc/html/boost_asio/tutorial/tutdaytime2.html#include <ctime>#incl原创 2020-12-03 23:27:25 · 421 阅读 · 0 评论 -
Leetcode 88. 合并两个有序数组
一般的想法是用一个新的数组,在这里新的数组就是从nums1的 m + n - 1位置开始作为一个新数组,只是这个数组的填充方式是逆序的。class Solution {public: void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { int i = m + n - 1; m--; n--; while原创 2020-11-22 22:28:02 · 61 阅读 · 0 评论 -
Leetcode 1275. 找出井字棋的获胜者
class Solution {public: string tictactoe(vector<vector<int>>& moves) { vector<vector<int>> cb = {{-1,-1,-1},{-1,-1,-1},{-1,-1,-1}}; int size = moves.size(); cb[moves[0][0]][moves[0][1]] = 1;原创 2020-11-22 19:32:00 · 172 阅读 · 0 评论 -
Leetcode 832. 翻转图像
class Solution {public: vector<vector<int>> flipAndInvertImage(vector<vector<int>>& A) { int row = A.size(); int col = A[0].size(); vector<vector<int>> ret(row); for(int i =原创 2020-11-22 14:22:42 · 62 阅读 · 0 评论 -
Leetcode 605. 种花问题
class Solution {public: bool canPlaceFlowers(vector<int>& flowerbed, int n) { int count = 0; int size = flowerbed.size(); flowerbed.insert(flowerbed.begin(), 0); flowerbed.insert(flowerbed.end(), 0);原创 2020-11-22 13:39:22 · 136 阅读 · 0 评论 -
Leetcode 228. 汇总区间
class Solution {public: vector<string> summaryRanges(vector<int>& nums) { vector<string> ret; int size = nums.size(); for (int i, j = 0; j < size; j++) { i = j; whi原创 2020-11-22 12:35:23 · 84 阅读 · 0 评论 -
Leetcode 219. 存在重复元素 II
class Solution {public: bool containsNearbyDuplicate(vector<int>& nums, int k) { int size = nums.size(); unordered_map<int, int> map; for (int i = 0; i < size; i++) { if (map.find原创 2020-11-22 00:30:09 · 66 阅读 · 0 评论 -
Leetcode 1550. 存在连续三个奇数的数组
class Solution {public: bool threeConsecutiveOdds(vector<int>& arr) { int count = 0; int size = arr.size(); for(int i = 0; i < size; i++) { if((arr[i] & 1) == 1) {原创 2020-11-21 20:54:52 · 85 阅读 · 0 评论 -
Leetcode 977. 有序数组的平方
class Solution {public: vector<int> sortedSquares(vector<int>& A) { int size = A.size(); int i = 0, j = 0; vector<int> ret, temp; for (int num: A) { temp.emplace_back(num.原创 2020-11-21 12:20:34 · 95 阅读 · 0 评论 -
Leetcode 面试题 17.10. 主要元素
class Solution {public: int majorityElement(vector<int>& nums) { // 摩尔投票算法 int major = 0; int count = 0; for(int i : nums) { if(count == 0) { major = i;原创 2020-11-21 10:15:01 · 95 阅读 · 0 评论 -
C++如何降低文件之间的依存关系
C++中,使用handle classes(句柄类)的目的,是为了降低文件之间的编译依存关系。摘自网上的一段话:需要句柄类的背景:1)在对安全要求很高的领域,即使核心实现已经封闭在库中不可见,但头文件中变量定义仍可能曝露一些内部信息C2)在设计初期、实现部分会经常变动,甚至头文件中变量定义也需要经常变动,因此在重编译的时候头文件也需要编译,有时候导致编译时间过长。 句柄类就是为了解决这类问题比如,我有一个类Person,在很多地方都用到了这个类(#incude Person.h),在程序不断完善转载 2020-05-11 18:44:49 · 144 阅读 · 1 评论 -
leetcode3. 无重复字符的最长子串
无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的...原创 2020-05-08 16:18:12 · 89 阅读 · 0 评论 -
leetcode------1. 两数相加
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> ...原创 2020-05-08 12:14:20 · 158 阅读 · 0 评论 -
Linux 进程间通信 信号量
Linxu下的信号量 信号量用于协调进程间的运行步调,即进程同步。经典的生产者消费者问题,就是典型的应用场景之一。另外,封装的二元信号量可以以哦那uong用于保护进程间共享的临界资源,类似于在多线程程序中用互斥量保护全局临界区。实际上,信号量在线程互斥量之前就已经出现了,因为早在多线程出现之前,进程间就已经存在同步运行步调的需求了。信号量通常配合共享内存使用。 信号量的工作逻辑相对比较简...转载 2020-04-29 17:59:28 · 319 阅读 · 1 评论 -
Linux消息队列编程
Linux消息队列编程 消息队列,Unix的通信机制之一,可以理解为是一个存放消息(数据)容器。将消息写入消息队列,然后再从消息队列中取消息,一般来说是先进先出的顺序。可以解决两个进程的读写速度不同(处理数据速度不同),系统耦合等问题,而且消息队列里的消息哪怕进程崩溃了也不会消失。最简单的消息内存的使用流程①ftok函数生成键值②msgget函数创建消息队列③msgsnd函数往消息队列...转载 2020-04-29 17:15:19 · 166 阅读 · 0 评论 -
linux下进程通信------FIFO
1. 命名管道(FIFO) 管道应用的一个重大缺陷就是没有名字,因此只能用于亲缘进程之间的通信。后来从管道的基础上提出命名管道(named pipe, FIFO)的概念,该限制得到了克服。FIFO 不同于管道之处在于它提供一个路径名与之关联,以FIFO的文件的形式存在于文件系统中。这样即使与FIFO的创建进程不存在亲缘关系的进程,只要可以访问该路径,就能彼此通过FIFO通信(能够访问该路径的进...转载 2020-04-29 11:10:03 · 165 阅读 · 0 评论 -
Linux下进程间通信方式——pipe(管道)
Linux下进程间通信方式——pipe(管道)参考自:https://www.cnblogs.com/wuyepeng/p/9747557.html每个进程有 不同的用户地址空间,任何一个进程的全局变量在另一个进程中是不可见的所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程A把数据从用户空间拷贝到内核缓冲区,进程B在从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信。...转载 2020-04-28 23:47:37 · 464 阅读 · 1 评论 -
Linux 下生产者和消费者模型
参考自:/* * 生产者与消费者模型 */lude <iostream>#include <queue>#include <pthread.h>class BlockQueue{ public: BlockQueue(int cap = 10):_capacity(cap){ pthread_mutex_init(&_m...转载 2020-04-21 20:56:43 · 103 阅读 · 0 评论 -
生产者消费者问题——C++ windows版 多生产者多消费者的队列实现
#include "public.h"#include <Windows.h>#include <map>#include <queue>CRITICAL_SECTION g_cs; // mutexHANDLE emptyBufferSemaphore; //HANDLE fullBuffe...转载 2020-04-16 19:56:22 · 1112 阅读 · 0 评论 -
C++ 汇编代码查看
参考:https://blog.csdn.net/zhangpeterx/article/details/100120219编译成汇编代码:g++ -S test.cpp -o test.s你发现你完全看不懂使用 as 展示汇编代码另一种更好的做法是使用as:编译成汇编代码:g++ -S -fverbose-asm -g test.cpp -o test.sas -alhnd te...转载 2020-04-16 19:31:48 · 719 阅读 · 0 评论 -
windows多线程(四) 关键段 CriticalSection
参考:https://www.cnblogs.com/ay-a/p/8810766.htmlwindows多线程(四) 关键段 CriticalSection一、问题回顾我们上一篇文章最后的程序的输出 g_Count 的值不是每次都正确,原因是没有对全局资源 g_Count 进行互斥访问(就是同一时刻只能由一个线程访问),接下来我们就来说一下使用关键段来给全局资源加锁以实现互斥访问。二、 ...转载 2020-04-16 19:23:20 · 357 阅读 · 0 评论 -
windows多线程(三) 原子操作
参考:https://www.cnblogs.com/ay-a/p/8798857.htmlwindows多线程(三) 原子操作一、分析上一篇程序的现象我们先从上一篇文章中的最后一个程序开始分析。#include <stdio.h>#include <windows.h>const unsigned int THREAD_NUM = 10;DWORD WIN...转载 2020-04-16 19:12:55 · 266 阅读 · 0 评论 -
windows多线程(二) 等待线程返回
参考:https://www.cnblogs.com/ay-a/p/8763274.htmlwindows多线程(二) 等待线程返回多线程编程中,有时我们需要等待某一线程完成了特定的操作后再继续做其他事情,要实现这个目的,可以使用Windows API函数WaitForSingleObject,或者WaitForMultipleObjects。这两个函数都会等待Object被标为有信号(sig...转载 2020-04-16 18:44:03 · 257 阅读 · 0 评论 -
windows多线程(一) 创建线程 CreateThread
参考:https://www.cnblogs.com/ay-a/p/8762951.html一 线程创建函数 CreateThread修改说明:这里 说了另一种创建线程方法,使用_beginthreadex()更安全的创建线程,在实际使用中尽量使用_beginthreadex()来创建线程,在博客中使用 CreateThread()l来创建线程其实是一种不太好的方法,不过这里只做原理分析,...转载 2020-04-16 18:36:20 · 409 阅读 · 0 评论 -
C++中DWORD
C++中使用DWORD不用声明,但是要加头文件Windows.h。DWORD 就是 Double Word, 每个word为2个字节的长度,DWORD 双字即为4个字节,每个字节是8位,共32位。DWORD的宏定义如下: #define DWORD unsigned longDWORD在Windows下经常用来保存地址(或者存放指针)。...原创 2020-04-16 12:57:14 · 3597 阅读 · 0 评论 -
C++重点知识
1.什么是虚函数?什么是纯虚函数?虚函数是允许被其子类重新定义的成员函数。虚函数的声明:virtual returntype func(parameter);引入虚函数的目的是为了动态绑定;纯虚函数声明:virtual returntype func(parameter)=0;引入纯虚函数是为了派生接口。(使派生类仅仅只是继承函数的接口)2.基类为什么需要虚析构函数?防止内存泄漏。想去借...转载 2020-04-13 13:47:34 · 5142 阅读 · 0 评论 -
C++ extern 关键字详解
C++ extern 关键字详解extern关键字的用法有如下几种:一 . 引入其它文件中定义的全局变量或函数 (不能是static修饰的,因为static修饰的变量或函数的作用域只存在于当前文件)比如 在a.c文件中定义了一个全局变量和函数: int num = 5; int funca() { ... }若想在b.c文件中引用a.c文件里的全局变量与函数,可以在...转载 2020-04-10 23:16:09 · 728 阅读 · 0 评论 -
全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?
**全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?**可以,在.h文件中 声明该全局变量 extern int data; 在其它需要使用的源文件中 extern int data; 即可,但是该变量的定义只能有一份,只允许在一个源文件中定义该变量 int data = 1;...原创 2020-04-10 23:09:57 · 2255 阅读 · 0 评论 -
C++ static 关键字
参考自:https://www.cnblogs.com/forsee/p/11822025.htmlC++ static 关键字详解在类外的作用1.变量局部变量局部变量即是在函数或一个代码块内部声明的变量。当局部变量被定义时,系统不会对其初始化;作用域为函数或一个代码块;局部变量储存在栈里,离开作用域就会无效。在局部变量前面加上关键字 static,该变量变为静态局部变量。变量...转载 2020-04-10 23:01:04 · 109 阅读 · 0 评论 -
C/C++ new一个二维数组
new一个M行N列的二维数组new:int **p;p = new int*[M];for(int i = 0; i < M; i++) p[i] = new int[N];delete:for(int i = 0; i < M; i++) delete [] p[i];delete []p;原创 2020-02-28 21:42:23 · 806 阅读 · 0 评论