[LeetCode C++实现]406. Queue Reconstruction by Height

在leetcode.com上随机选择到这个题目,讲道理,第一遍没看懂题目啥意思,有很多人也在吐槽题目读不懂I don't understand the question. Reconstruct the queue to what?直到我打开讨论区看了一眼别人的python代码,如果你也看不懂这个题目描述,我结合中文版的描述加以完善:

现在有一个队列,每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。但现在输入的序列是随机打乱的,编写一个算法来重建这个队列。

输入队列:

[[7,0], [4,4], [7,1], [5,0], ......

exec家族execvp函数使用趣事

公司一小兄弟问我:execvp函数执行后不返回,如何将申请的内存释放掉呢?还专门发我一个不知道从哪个英文网站copy的例子,问我使用valgrind怎么没有检测出来内存泄露,你不是吹valgrind吹的天花乱坠吗?这个例子仅仅为了说明这个问题,如果换成myargs[0] = "wc";这种写法,就不会存在本篇文章了。

完整例子如下:

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

#include <string.h>

#include <fcn......

地址空间随机化

在阅读操作系统导论一书,书中第二章有个例子如下:

common.h

#ifndef __common_h__

#define __common_h__

#include <sys/time.h>

#include <sys/stat.h>

#include <assert.h>

double GetTime() {

struct timeval t;

int rc = gettimeofday(&t, NULL);

assert(rc == 0);

return (double) t.tv_sec + (double) t.tv_usec......

日常开发笔记总结(五)

周末在家收拾东西,找到一本刚入职时记的笔记,重新读一遍记录部分内容方便查阅。

获取下标为n的元素地址

当时记录在笔记本上旁边有个大大的问号,为何不使用下标形式呢?

#include <stdio.h>

//获取下标为n的元素地址

#define ELEM_PTR(base,n,esize) ((void *)(((char *)base + n*esize)))

int main()

{

int arr[] = {1,2,3,4,5,6,7,8,9,10};

printf("address of fifth elem = %p.\n",ELEM_PTR(arr,5,4......

go语言初学记录

部门计划年底开始转到go,难得这个周末在家没事,学习go圣经这里记录下与C C++ lua中的异同点。对比主要涉及ANSI C 、C++98、 C++11(小部分)、 lua,不涉及c++14 c++17 c++20等新特性。在学习go的过程中一个下意识的举动就是想某某特性C/C++ lua里对应怎么实现?

学习的直观感受是go中有的,C/C++ lua都有,但大部分情况下没有go用起来简单、方便。语法和使用上C/C++远比go复杂的多,go入门快,学习性价比高。初学go,文章中的观点如有错误,欢迎评论指出。本文部分例子来源于go-tour和go by example这两个教程非常好,非常适......

日常开发笔记总结(四)

在geeksforgeeks上看到一篇介绍shared_ptr的文章,里面提到了Cyclic Dependency。

维基百科中也有详细的介绍Circular dependency

维基百科中提到一种循环依赖关系错误的例子:

a.h

#ifndef A_H

#define A_H

class B; //forward declaration

cl......

[LeetCode C++实现]46.Permutations

46.Permutations

一口气刷了3道简单题目,正当得意忘形的时候遇到了一道求全排列的题,竟然一时间不知道如何下手。

由于恰好看algorithm中有实现next_permutation,因此直接使用stl中的现有实现:

方法一:

next_permutation

class Solution {

public:

vector<vector<int> > permute(vector<int> &num) {

vector<vector<int> > ans;

sort(num.begin(), num......

KMP算法简介与应用

延期复工在家无聊,刷了几道leetcode的题,目前进度111 / 1340,很多题目现在觉得好简单,一遍手敲代码,直接AC。但运行速度和内存占用往往很难达到top 10%。以leetcodeimplement strstr为例,要实现子串查找最简单的就是暴力求解,两层for循环搞起来。当然两层for循环的基础上还能有小的优化。

class Solution {

public:

int strStr(string haystack, string needle) {

int hsize = haystack.size();

int nsize = needle.size();

for......

c++filt用法介绍

解析变量类型

typedef char * pstring;

const pstring cstr = 0; //cstr是指向char的常量指针

const pstring *ps; //ps是一个指针,它的对象是指向char的常量指针

上面两条声明语句的基本数据类型都是const pstring,const是对给定类型的修饰。pstring实际上指向char的指针,因此const pstring就是指向char的常量指针,而非指向常量字符的指针。

遇到类型别名时,人们往往会错误地尝试把类型别名展开,以理解该语句的含义,这是错误的!

例如:

typedef char *......

C++语言导学

放假前去朋友那闲逛,发现他一前端居然看起了一本名为 C++语言导学 的书,这不是不务正业吗?

为了让他在前端方面能有更深的造诣,我只能把这本书拿来勉为其难的读下。

说来惭愧工作中使用的C++只是最简单的那部分,公司编程规范中明确规定不能使用c++ 11 14 17 模板等新特性。本文记录学习该书过程中的疑问,如有错误欢迎指正。

确定默认c++编译标准

如何确定当前g++使用的哪个版本的C++标准编译呢?

这里介绍一种查看方法,如果当前g++版本是4.7之后,可以使用如下方法查看:

[root workspace]#g++ --version | head -1

g++......