[LeetCode C++实现]200. Number of Islands

染色问题,这里使用的方法修改了传入的参数grid,这个题目也可以使用并查集方法解决。

class Solution {

private:

int m;

int n;

void dfs(vector<vector<char>>& grid,int i,int j) {

if(i < 0 || j < 0 || i >= m || j >= n || grid[i][j] != '1')

return;

grid[i][j] = '0';

dfs(grid,i-1,j);

dfs(grid,i+1,j);

dfs(grid,i,j......

[LeetCode C++实现]1669. Merge In Between Linked Lists

首先无脑爆破,使用最直观的方法AC

/**

* Definition for singly-linked list.

* struct ListNode {

* int val;

* ListNode *next;

* ListNode() : val(0), next(nullptr) {}

* ListNode(int x) : val(x), next(nullptr) {}

* ListNode(int x, ListNode *next) : val(x), next(next) {}

* };

*/

class Solution {

p......

[LeetCode C++实现]152. Maximum Product Subarray

这道题目加深了我对于DP的理解,这里需要记录最大值和最小值,最大值来源于正数相乘或负数相乘,因此初始时最终结果res cur_min cur_max均为nums[0],然后计算cur_min和cur_max乘以nums[i],最终计算三者当中最小值 最大值,更新到cur_min 和cur_max在下一个循环里继续处理,最终结果即res.

class Solution {

public:

int maxProduct(vector<int>& nums) {

int size = nums.size();

int res = nums[0], cur_min = num......

leveldb中的LRUCache学习

由于查询内存要远比查询mongo数据库快,为了减少数据库查询压力,提升业务进程处理速度,实现了一个简单的lrucache,笔记链接LRU算法C++实现。内存相对于磁盘永远是奢侈品,但随着时代的发展,现在的服务器动辄32G 64G起步,分出几个G来提高访问速度是必要的。计算机中有个比较有意思的现象,要么以时间换空间,要么以空间换时间,LRU算法则属于后者。

QQ group里听某位大哥说google leveldb中有一套非常经典的lrucache实现,心向往之,周日跑了一天的装修后,晚上一边泡着脚一边github上拉下来代码研究下。

首先是leveldb的安装,网上找了一些安装方法,差不多......

日常开发笔记总结(三)

拷贝赋值函数#include <string>

#include <iostream>

using namespace std;

class Person{

string name;

int age;

public:

Person(const string &name,int age):name(name),age(age){}

//拷贝构造和拷贝赋值函数

Person(const Person &p):name(p.name),age(p.age){}

Person& operator=(const Person &p)

{

cou......

LRU算法C++实现

最近项目里需要实现一个LRU算法,github上找到一个c++版本,虽然C++用的少,但看了下源码之后发现学到了不少知识。本文记录如何使用该开源库,最后给出学习之后对源代码的注释版本。

原项目地址:cpp-lru-cache

源代码使用,将如下代码命名为lru_example.cpp,并与文件lrucache.hpp放在同一个目录下。使用如下命令编译:

g++ -g -std=c++11 -o lru_example lru_example.cpp

lru_example.cpp

#include "lrucache.hpp"

#include <......

C语言函数getrlimit与setrlimit介绍

老规矩,祭出man手册。学习man手册中的内容:man 2 getrlimit

The getrlimit() and setrlimit() system calls can be used to get and set the resource limits such as files, CPU, memory etc. associated with a process.

Each resource has an associated soft and hard limit.

soft limit: The soft limit is the actual limit enfo......

日常开发笔记总结(二)

CTF-ALL-In_One笔记

看到朋友圈学弟推荐他舍友写的一套CTF学习路线,作为一名"安全"从业人员,个人觉得还是有必要静下心来好好学习。本文只记录一些相对不太熟或理解不深刻的知识点,并尽量辅之以实例。

CTF-ALL-In_One

apropos 命令

apropos [whatever] 在一些特定的包含系统命令的简短描述的数据库文件里查找关键字

[root workspace]#apropos passwd

chgpasswd (8) - update group passwords in batch mode

chpasswd ......

协程-C语言实现

最近在学习lua的过程中发现lua居然有个东西叫协程(协同coroutine),虽然以前就听过这个概念,但没有结合实践的一些理解。

开始今天的文章前,首先需要学习下面几篇文章。

漫画-什么是协程?

lua协同程序

difference between a coroutine and a thread

linux下有ucontext族函数,可以用于实现协程。

我所理解的ucontext族函数

ucontext族函数详解

Segment Fault例子:

#include <stdio.h>

void ping();

void pong();

vo......

mongoc-c-driver使用教程

ubuntu install MongoDB

Installing the MongoDB C Driver (libmongoc) and BSON library (libbson)