准确来讲,字符串哈希直接使用 C++ 内置的 hash_map 就可以了,不需要自己计算 class Solution { const int L =10; public: vector findRepeatedDnaSequences(string s) { // 字符串哈希 vector ans; unordered_map<string, int> cnt; int lenS = s.length(); for(int i=0;i<=lenS-L;++i){ string subS =...

[toc] # leetcode 105 前序与中序构造二叉树 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode...

[toc] # 进程与线程的简单区别 地址空间和其他资源: 进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。 通信:进程间通信 IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信–需要进程同步和互斥手段的辅助,以保证数据的一致性。 调度和切换:线程上下文切换比进程上下文切换要快得多。 在多线程 OS 中,进程不是一个可执行的实体。 # 踩坑记录 官网下载的 release 版本的 MinGW 不带 threads-poixs 支持,所以得下载这个版本并且覆盖到 mingw 根目录下...

[toc] 摘自 https://mp.weixin.qq.com/s/uz85-w9ZfwRP0ZZCI7jOzQ # 什么是池化思想 池化思想在日常编程中其实非常常见。比如 Web 开发面试时经常会问到 java 的线程池的实现。以及游戏开发中常用的对象池、引用池等等一系列的池。那么池化思想到底是用来做什么的呢? 有一点需要肯定的是,当我们尝试创建一个新的对象或者销毁一个旧的对象的时候,一定会带来一定的时间和性能开销。而面对一个大型的系统而言,在没有池的前提下,大量的创建以及销毁是不可避免的。一个对象的创建或销毁的时间可以忽略不计,但是数以万计的对象的创建和销毁就会带来巨大的 GC...

[toc] # 容斥原理公式 # 通俗解释 有 N 个集合,求这 N 个集合的交集 结果等于:所有个数为 1 的集合的和减去所有个数为 2 的集合的和加上所有个数为 3 的集合的和减去所有个数为 4 的集合的和… 简洁写法 比如三个集合的交集 # 推演概率论 由此我们可以退出概率论的原理 即设事件 A_i(i=1,2,3...n)A\_{i}(i=1,2,3...n)A_i(i=1,2,3...n),P(A_i)P(A\_{i})P(A_i) 代表发生某些事件的概率 (即至少发生一间事件的概率), 就是容斥原理的公式 # Leetcode 223 # 题目 #...

[toc] # 浮点常量 与整数相比 优点: - 他们可以表示整数之间的值 - 表示范围大很多 缺点: - 浮点运算比整数慢 - 精度会降低 # 整型 int 运算最快 # 表达式类型提升 Prime Plus 中说,这个类型提升的操作是通过一个叫 "校验表" 来进行的 C++11 版本的校验表: 如果有一个操作数的类型是 long double, 则将另一个操作数转换为 long double 否则,如果有一个操作数的类型是 double, 则将另一个操作数转换为 double 否则,如果有一个操作数的类型是 float, 则将另一个操作数转换为...

# 定义 (简单版) C++ 中有两种类型的表达式: 12左值(lvalue):指向内存位置的表达式被称为左值(lvalue)表达式。左值可以出现在赋值号的左边或右边。右值(rvalue):术语右值(rvalue)指的是存储在内存中某些地址的数值。右值是不能对其进行赋值的表达式,也就是说,右值可以出现在赋值号的右边,但不能出现在赋值号的左边。 变量是左值,因此可以出现在赋值号的左边。数值型的字面值是右值,因此不能被赋值,不能出现在赋值号的左边。下面是一个有效的语句: 1 int g = 20; 但是下面这个就不是一个有效的语句,会生成编译时错误: 1 10 = 20;

此书以艾格个人的视角讲述了他从初入 ABC 到成为迪士尼 CEO 的人生历程。或许我们能够从中窥探到一些人类社会中成长历程的共通性。如艾格通篇都在陈述真诚与自知的重要性,也正是因为这份重要性。他可以从乔布斯手中把现如今图形学界最厉害的公司 "皮克斯" 收入迪士尼的麾下。甚至可以和乔布斯这样解决不逊,满脑子艺术浪漫又浑身是棱角的人成为至交。而后在于史蒂夫妻子交谈中,妻子告诉艾格 "我问他我们能不能信任你 (艾格)",“然后史蒂夫回答说:‘我敬爱这个人’”。...

[toc] # 什么是智能指针 智能指针是为了解决动态内存分配时带来的内存泄漏以及多次释放同一块内存空间而提出的。C11 中封装在了 <memory> 头文件中。 C11 中智能指针包括一下三种: - 共享指针 (shared_ptr): 资源可以被多个指针共享,使用计数机制表明资源被几个指针共享。通过 use_count() 查看资源的所有者的个数,可以通过 unique_ptr 、 weak_ptr 来构造,调用 release() 释放资源的所有权,计数减一,当计数减为 0 时,会自动释放内存空间,从而避免了内存泄漏 独占指针 (unique_prt) :...