trie树-单词树-实现敏感词屏蔽和词频统计 文章目录一、单词树介绍二、实现思路2.1 词频统计和单词查找2.2 敏感词屏蔽三、代码实现前几天都看一个敏感词屏蔽算法的文章,写的挺好,顺着思路写了下去,实现了一下,算法效率还是杠杠的。。。一、单词树介绍利用的是单词树的算法,先看看什么叫单词树。单词树也叫trie 树也称为字典树。最大的特点就是共享字符串的公共前缀来达到节省空间的目的。例如,字符串 "abc"和"abd"构成的单词树如下:...
epoll+多进程服务器模型 | C++ 多个进程同时监听一个端口,如果外部有连接,多个进程通过内核实现的竞争机制,就会有一个被唤醒。直接上代码:int main(){ // 创建服务器 int fd = socket(AF_INET, SOCK_STREAM, 0); struct sockaddr_in addr; addr.sin_family = AF_INET; addr.sin_...
STL数据结构总结 文章目录【1】vector【2】list【3】deque【4】stack【5】queue【6】heap【7】priority_queue【8】slist【9】关联式容器【10】rb_tree 红黑树【11】set【12】map【13】multiset【14】mutimap【15】hashtable【16】hashset【17】hash_map【18】hash_multiset【19】hash_mu...
libcurl实例使用:用post方式发送数据 文章目录一、准备二、程序实例-发送一个post请求三、总结今天得空来整理以前的笔记,看到了libcurl。稍微整理记录再加上顺带复习一下。一、准备下载官网链接:https://curl.haxx.se/编译三步走cd curl./buildconf./configuremakesudo make install二、程序实例-发送一个post请求#include <...
分糖果 II | LeetCode 一、题目描述排排坐,分糖果。我们买了一些糖果 candies,打算把它们分给排好队的 n = num_people 个小朋友。给第一个小朋友 1 颗糖果,第二个小朋友 2 颗,依此类推,直到给最后一个小朋友 n 颗糖果。然后,我们再回到队伍的起点,给第一个小朋友 n + 1 颗糖果,第二个小朋友 n + 2 颗,依此类推,直到给最后一个小朋友 2 * n 颗糖果。重复上述过程(每次都比上...
一年中的第几天 | LeetCode 文章目录一、题目描述二、题解思路三、程序实例一、题目描述二、题解思路将年月日提取出来;加上天数;加上相应前一个月的天数;判断是否为闰年,是就加1;三、程序实例class Solution {public: int dayOfYear(string date) { int year = atoi(date.substr(0, 4).c_str()); ...
路由表内容与路由分组转发过程 文章目录一、路由表内容二、路由分组转发过程一、路由表内容Network Destination:目标网段Netmask:子网掩码,IP地址与子网掩码按位与,可以得出该IP地址的网络号,IP地址与子网掩码取反后按位与,可以得出该IP地址的主机号。Interface:达到该目标网段的本地路由器的出口IP。Gateway:网关IP,下一跳路由器的入口IP,通常情况下,interface和gat...
LeetCode | 数组的相对排序 文章目录一、题目描述二、题解思路三、程序实例一、题目描述给你两个数组,arr1 和 arr2,arr2 中的元素各不相同arr2 中的每个元素都出现在 arr1 中对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。未在 arr2 中出现过的元素需要按照升序放在 arr1 的末尾。示例:输入:arr1 = [2,3,1,3,2,4,6,7,9,...
LeetCoe | 等价多米诺骨牌对的数量 一、题目描述给你一个由一些多米诺骨牌组成的列表 dominoes。如果其中某一张多米诺骨牌可以通过旋转 0 度或 180 度得到另一张多米诺骨牌,我们就认为这两张牌是等价的。形式上,dominoes[i] = [a, b] 和 dominoes[j] = [c, d] 等价的前提是 a == c 且 b == d,或是 a == d 且 b == c。在 0 <= i < j ...
LeetCode | 第 N 个泰波那契数 文章目录一、题目描述二、题解思路三、程序实例一、题目描述泰波那契序列 Tn 定义如下:T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2给你整数 n,请返回第 n 个泰波那契数 Tn 的值。二、题解思路利用公式Tn+3 = Tn + Tn+1 + Tn+2。每计算一次n3就向后移动一位:// 第一次0 ...
LeetCoe | 翻转二叉树 文章目录一、题目描述二、题解思路三、程序实例一、题目描述翻转一棵二叉树。示例:输入: 4 / \ 2 7 / \ / \1 3 6 9输出: 4 / \ 7 2 / \ / \9 6 3 1备注:这个问题是受到 Max Howell 的 原问题 启发的 :谷歌:我们90%的工程师...
阶乘的缓存算法 阶乘一般都是用递归的方式,但是在重复使用阶乘的场景,就需要使用缓存了,这样就能提升很大效率了。如下:#include <iostream>#include <vector>#include <string.h>#include <algorithm>using namespace std;int n = 6;int* cache = ...
https握手过程 浏览器将自己的SSL加密组件(RAS加密算法、对称加密算法、hash摘要算法+密钥长度) 发送给请求网站;网站会从中选出一组加密算法和hash算法,并将自己的身份信息以证书的方式发回浏览器。浏览器验证证书的正确性,或者用户接收了不受信任的证书,浏览器会生成一串随机的密码,并用证书的公钥加密,同时使用hash算法计算握手信息,并用随机密码加密,将这些所有的信息发送给网站;网站用私钥解密信息,...
C++ | fork()进程之后,子进程继承的属性 fork后,子进程继承了父进程很多属性,包括:文件描述符:相当与dup,标准输入标准输出标准错误三个文件账户/组ID:进程组ID会话ID控制终端set-user-ID和set-group-ID标记当前工作目录根目录umask信号掩码文件描述符的close-on-exec标记环境变量共享内存内存映射资源限制但是也有一些不同,包括:fork返回值进程ID父进...
LeetCode | 路径总和 III 一、题目描述给定一个二叉树,它的每个结点都存放着一个整数值。找出路径和等于给定数值的路径总数。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。示例:root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = 8...
LeetCode | 找到字符串中所有字母异位词 一、题目描述给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引。字符串只包含小写英文字母,并且字符串 s 和 p 的长度都不超过 20100。说明:字母异位词指字母相同,但排列不同的字符串。不考虑答案输出的顺序。示例 1:输入:s: "cbaebabacd" p: "abc"输出:[0, 6]解释:起始索引等于 ...
LeetCode | 找到所有数组中消失的数字 一、题目描述给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。示例:输入:[4,3,2,7,8,2,3,1]输出:[5,6]二、题解思...
C++ | 虚析构函数 虚析构函数是用来解决,使用了基类指针调用子类的时候,到最后释放内存的时候,父类调用的是自己的析构函数而没有调用子类的析构函数,所以需要重写子类的析构函数。总之,是为了解决基类的指针指向派生类对象,并用基类的指针删除派生类对象。#include<iostream>using namespace std;class People{public: People() { ...
LeetCode | 汉明距离 一、题目描述两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意:0 ≤ x, y < 231.示例:输入: x = 1, y = 4输出: 2解释:1 (0 0 0 1)4 (0 1 0 0) ↑ ↑上面的箭头指出了对应二进制位不同的位置。二、题解思路取低位依次...
LeetCode | 把二叉搜索树转换为累加树 文章目录一、题目描述二、题目解析三、程序实例一、题目描述给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。例如:输入: 二叉搜索树: 5 / \ 2 13输出: 转换为累加树: ...
C++中 # 和 ## 的用法 一句话总结:#是连接字符串的,##是用来粘合的(比如一个名字,或者一个值)。举个栗子:#include <stdio.h>#define CAT(x, y) x ## y#define CAT_STR(x) "hello: " # x#define f(a, b) a##b#define g(a) #a#define h(a) g(a)int main(int ...
C++ | 宏定义只替换不组合原则 举个栗子:#include <stdio.h>#define MOD(x, y) x * y#define MOD1(x, y) x % y// 宏定义只替换不组合int main(int argc, char const *argv[]) { int x = 2, y = 2; printf("%d", MOD(x, y + 2)); // 6 ...
LeetCode | 二叉树的直径 文章目录一、题目描述二、题解思路三、程序实例一、题目描述给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 ...
LeetCode | 最短无序连续子数组 文章目录一、题目描述二、题解思路三、程序实例一、题目描述给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。你找到的子数组应是最短的,请输出它的长度。示例 1:输入: [2, 6, 4, 8, 10, 9, 15]输出: 5解释: 你只需要对 [6, 4, 8, 10, 9] 进行升序排序,那么整个表都会变为升序排序。说明 :...
LeetCode | 合并二叉树 一、题目描述给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。示例 1:输入: Tree 1 Tree 2 ...
C++ | for_each-仿函数-lamda表达式 文章目录[1] 普通for_each使用仿函数[1] 普通for_each使用仿函数,仿函数自带参数[2] for_each使用匿名仿函数-lamda表达式[1] 普通for_each使用仿函数#include <iostream>#include <vector>#include <algorithm>using namespace std;st...
LeetCode | 二叉搜索树的最近公共祖先 一、题目描述给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]示例 1:输入: root...
LeetCode | 2的幂 一、题目描述给定一个整数,编写一个函数来判断它是否是 2 的幂次方。示例 1:输入: 1输出: true解释: 20 = 1示例 2:输入: 16输出: true解释: 24 = 16示例 3:输入: 218输出: false二、题解思路暴力匹配,相等就说明有,大于就没有;2的幂在二进制里只有一个位是为1的;三、程序实例class Solution {...
LeetCode | 反转字符串中的单词 III 一、题目描述给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例 1:输入: "Let's take LeetCode contest"输出: "s'teL ekat edoCteeL tsetnoc" 注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。二、题解思路字符串反转,注意保留空格和\0。三、程序实例cla...
无锁生产者与消费者模型实例-线程 无锁的话就是要两个线程不能同时访问一个变量。那么这样就干脆用两个任务链表,如果在读队列里面的任务处理完成,同时写队列里面又有任务了,就交换两个队列,交换任务队列的动作由主线程来实现。基于这种思想代码如下:#include "public.h"#include <list>using namespace std;list<int>* queueMain;list...
LeetCoe | 按序打印 一、题目描述我们提供了一个类:public class Foo { public void one() { print("one"); } public void two() { print("two"); } public void three() { print("three"); }}三个不同的线程将会共用一个 Foo 实例。线程 A 将会调用 one() 方法线程...
利用条件变量实现进程间同步示例讲解 文章目录[1] get_cond_wait.c 初始化条件变量和锁函数[2] cond_signal.c 发送信号函数[3] cond_wait.c 等待信号函数[4] Makefile[4] 运行结果[1] get_cond_wait.c 初始化条件变量和锁函数#include "public.h"char* get_cond_wait(const char* filename, pth...
线程退出函数pthread_cancel() 采坑点 pthread_cancel() 时用来线程退出的,但是在使用的时候还是有一些要注意的地方。如下代码:static void* pthread_func1(void* arg){ while(1) { printf("haha"); sleep(1); } return NULL;}static void* pthrea...
SGI iota() 函数 是SGI中的函数不是STL的。iota(iterator first, iterator last, value),是将first和last区间直接赋值,value, value+1, value + 2。。。源码如下:void iota(ForwardIterator first,ForwardIterator last,T value) { while (first != las...
LeetCode | 只出现一次的数字 一、题目描述给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4二、题解思路利用集合,在集合中的删除,不在的加入,最后剩下一个不同的;利用异或,相同数字异或为...
LeetCode | 3的幂 一、题目描述给定一个整数,写一个函数来判断它是否是 3 的幂次方。示例 1:输入: 27输出: true示例 2:输入: 0输出: false示例 3:输入: 9输出: true示例 4:输入: 45输出: false进阶:你能不使用循环或者递归来完成本题吗?二、题解思路循环求幂然后比较大小,等于的时候是是 3 的幂次方,不等于或者大于则不是。n 大于...
LeetCode | 移动零 一、题目描述给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。二、题解思路将数组从后往前移动,碰到0且不是最后一个元素,则需要移动当前下标以及以后的元素。要想移动的最少,需要增加一个count,也就是...
Go | unsafe.Sizeof长度计算 Go中也有计算长度的sizeof()内置函数。package mainimport "fmt"import "unsafe"func main(){ var a string = "haha" fmt.Println("sizeof(a) = ", unsafe.Sizeof(b)) // 16 var b int = 1 fmt.Printl...
LeetCode | 有效的字母异位词 一、题目描述给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false说明:你可以假设字符串只包含小写字母。进阶:如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对...
LeetCode | 移除链表元素 一、题目描述删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5二、题解思路普通遍历;递归;三、程序实例/** * Definition for singly-linked list. * struct ListNod...
LeetCode | 旋转数组 文章目录一、题目描述二、题解思路三、程序实例一、题目描述给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转...
LeetCode | 相交链表 文章目录一、题目描述二、题解思路三、程序实例一、题目描述编写一个程序,找到两个单链表相交的起始节点。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 ...
LeetCode | 求众数 文章目录一、题目描述二、题解思路三、程序实例一、题目描述给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在众数。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2二、题解思路众位数肯定是数组...
LeetCode | 快乐数 文章目录一、题目描述二、题解思路三、程序实例一、题目描述编写一个算法来判断一个数是不是“快乐数”。一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。示例:输入: 19输出: true解释: 12 + 92 = 8282 + 22 = 68...
LeetCode | 阶乘后的零 文章目录一、题目描述二、题解思路三、程序实例一、题目描述给定一个整数 n,返回 n! 结果尾数中零的数量。示例 1:输入: 3输出: 0解释: 3! = 6, 尾数中没有零。示例 2:输入: 5输出: 1解释: 5! = 120, 尾数中有 1 个零.说明: 你算法的时间复杂度应为 O(log n) 。二、题解...
LeetCode | 环形链表 文章目录一、题目描述二、题解思路三、程序实例一、题目描述给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例 2:...
LeetCode | 反转链表 文章目录一、题目描述二、题解思路三、程序实例一、题目描述反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?二、题解思路递归;自身链表的反转;三、程序实例/** * Definitio...
LeetCode | 颠倒二进制位 文章目录一、题目描述二、题解思路三、程序实例一、题目描述颠倒给定的 32 位无符号整数的二进制位。示例 1:输入: 00000010100101000001111010011100输出: 00111001011110000010100101000000解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596, ...
LeetCode | 打家劫舍 文章目录一、题目描述二、题解思路三、程序实例一、题目描述你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解...
LeetCode | Fizz Buzz 文章目录一、题目描述二、题解思路三、程序实例一、题目描述写一个程序,输出从 1 到 n 数字的字符串表示。如果 n 是3的倍数,输出“Fizz”;如果 n 是5的倍数,输出“Buzz”;3.如果 n 同时是3和5的倍数,输出 “FizzBuzz”。示例:n = 15,返回:[ "1", "2...
LeetCode | Excel表列序号 文章目录一、题目描述二、题解思路三、程序实例一、题目描述给定一个Excel表格中的列名称,返回其相应的列序号。例如,A -> 1B -> 2C -> 3...Z -> 26AA -> 27AB -> 28 ...示例 1:输入: "A"输出: 1示例 2:输入: "AB"输出: 28示例 3:输入:...
SMTP,MIME,POP,IMAP之间的关系 SMTP:邮件发送协议;MIME:一种数据格式,可以是图片和语音,广泛用于邮件、web等地方;POP:邮件接收协议;IMAP:邮件接收协议,但是他是在服务器端直接处理邮件,比如可以在一个邮件含有10个附件的情况下只下载第七个附件。而且IMAP在服务器上对“已读/未读”信息和邮件进行分类管理。这样可以做到多终端的邮件同步,比如手机和电脑。;...
LeetCode | 缺失数字 一、题目描述给定一个包含 0, 1, 2, …, n 中 n 个数的序列,找出 0 … n 中没有出现在序列中的那个数。示例 1:输入: [3,0,1]输出: 2示例 2:输入: [9,6,4,2,3,5,7,0,1]输出: 8说明:你的算法应具有线性时间复杂度。你能否仅使用额外常数空间来实现?二、题解思路1、排序完成后逐个对比,不相等则返回;2、将从0开始的序列相加,...
STL | difference_type的使用 difference_type使用来表示两个迭代器之间的距离的。STL源码剖析中的代码:template<class I, class T>typename iterator_traits<I>::difference_type count(I first, I last, const \ T& value){ typename iterat...
STL | value_type的使用 value_type 是用来表示迭代器所指对象的类别的。STL源码剖析中的栗子:template<class T>class list{public: typedef T value_type; //……};里面的value_type实际就是传入模板的类型,见以下栗子,说明它能够很好的返回模板类型。#include <list> #i...
LeetCode | 两个数组的交集 II 一、题目描述给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2,2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [4,9]说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。我们可以不考虑输出结果的顺序。进阶:...
LeetCode | 字符串中的第一个唯一字符 一、题目描述给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。案例:s = "leetcode"返回 0.s = "loveleetcode",返回 2.注意事项:您可以假定该字符串只包含小写字母。二、题解思路用find的方式,如没找到除本身以外的字符则是唯一的,直接返回即可;然后利用set的特性去除重复的字符,有重复的就直接跳过。三、程...
LeetCode | 两整数之和 一、题目描述不使用运算符 + 和 - ,计算两整数 a 、b 之和。示例 1:输入: a = 1, b = 2输出: 3示例 2:输入: a = -2, b = 3输出: 1二、题解思路两个整数a, b; a ^ b是无进位的相加; a&b得到每一位的进位;让无进位相加的结果与进位不断的异或, 直到进位为0;三、程序实例c...
LeetCode | 数字的补数 一、题目描述给定一个正整数,输出它的补数。补数是对该数的二进制表示取反。注意:给定的整数保证在32位带符号整数的范围内。你可以假定二进制数不包含前导零位。示例 1:输入: 5输出: 2解释: 5的二进制表示为101(没有前导零位),其补数为010。所以你需要输出2。示例 2:输入: 1输出: 0解释: 1的二进制表示为1(没有前导零位),其补数为0。所以你需要输出0。...
LeetCode | 字符串的最大公因子 一、题目描述对于字符串 S 和 T,只有在 S = T + … + T(T 与自身连接 1 次或多次)时,我们才认定 “T 能除尽 S”。返回字符串 X,要求满足 X 能除尽 str1 且 X 能除尽 str2。示例 1:输入:str1 = "ABCABC", str2 = "ABC"输出:"ABC"示例 2:输入:str1 = "ABABAB", str2 = "ABAB"输出...
LeetCode | 有效的回旋镖 一、题目描述回旋镖定义为一组三个点,这些点各不相同且不在一条直线上。给出平面上三个点组成的列表,判断这些点是否可以构成回旋镖。示例 1:输入:[[1,1],[2,3],[3,2]]输出:true示例 2:输入:[[1,1],[2,2],[3,3]]输出:false提示:points.length == 3points[i].length == 20 <= poin...
LeetCode | 困于环中的机器人 一、题目描述在无限的平面上,机器人最初位于 (0, 0) 处,面朝北方。机器人可以接受下列三条指令之一:“G”:直走 1 个单位“L”:左转 90 度“R”:右转 90 度机器人按顺序执行指令 instructions,并一直重复它们。只有在平面中存在环使得机器人永远无法离开时,返回 true。否则,返回 false。示例 1:输入:"GGLLGG"输出:true解释:机器人...
LeetCode | 最后一块石头的重量 一、题目描述有一堆石头,每块石头的重量都是正整数。每一回合,从中选出两块最重的石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:如果 x == y,那么两块石头都会被完全粉碎;如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。最后,最多只会剩下一块石头。返回此石头的重量。如果没有石头剩...
LeetCode | 删除字符串中的所有相邻重复项 一、题目描述给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。示例:输入:"abbaca"输出:"ca"解释:例如,在 “abbaca” 中,我们可以删除 “bb” 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得...
OpenCV | PCA人脸识别 主成分分析(PCA)——Eigenfaces(特征脸)——函数:createEigenFaceRecognizer()PCA:低维子空间是使用主元分析找到的,找具有最大方差的哪个轴。缺点:若变化基于外部(光照),最大方差轴不一定包括鉴别信息,不能实行分类。程序实现了PCA的人脸识别,显示平均脸,特征脸以及重建。步骤以及解析都写在注释里面了。#include <opencv2/open...
OpenCV | GMM 非数学角度的一点理解 一、先说一个栗子米饭的例子假如现在在食堂吃饭,找了张桌子,我打了一碗饭,往这里一坐,碗放在桌上。以俯视的角度从上往下看,此时把桌子看做坐标轴,米饭为数据点,这是在二维平面上,那么数据点是由二维坐标确定的。那么碗就可以看做GMM模型二维聚类俯视图的圈,聚类的中心点自然就是在碗里。此时的桌子、碗、米饭组成的整体,就可以称之为二维平面上的一成分高斯混合模型。这个时候,突然来了个同学,也正好端着一碗...
LeetCode | 买卖股票的最佳时机 II 一、题目给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔...
C++ | socket服务端与客户端通信小实例 今天偶尔翻到了很久以前写的socket建立通信的小例子,里面居然还奢侈的加了select 多路复用,加了注释发出来。一、 服务端:#include <iostream>#include <stdio.h>#include <sys/socket.h>#include <arpa/inet.h>#include <unistd.h&g...
LeetCode | 买卖股票的最佳时机 文章目录一、题目二、题解思路三、程序示例一、题目给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖...
LeetCode | x 的平方根 一、题目实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842…,由于返回类型是整数,小数部分将被舍去。二、题解思路用二分查找的方法, 还有一种是牛顿迭代法。三、程序实例cl...
为什么要ReLU激活函数 导语在深度神经网络中,通常使用一种叫修正线性单元(Rectified linear unit,ReLU)作为神经元的激活函数。ReLU起源于神经科学的研究:2001年,Dayan、Abott从生物学角度模拟出了脑神经元接受信号更精确的激活模型,如下图: 其中横轴是时间(ms),纵轴是神经元的放电速率(Firing Rate)。同年,Attwell等神经科学家通过研究大脑的能量消耗过程,推...
1x1的卷积能做什么呢? 所谓信道压缩,Network in Network是怎么做到的?对于如下的二维矩阵,做卷积,相当于直接乘以2,貌似看上去没什么意义。但是,对于下面这种32通道的数据,如果我用1个1x1x32的卷积核与其做卷积运算,得到的就是1个6x6的矩阵。在这个过程中,...
LeetCode | 二进制求和 给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。示例 1:输入: a = "11", b = "1"输出: "100"示例 2:输入: a = "1010", b = "1011"输出: "10101"class Solution {public: string addBinary(string a, string b) ...
LeetCode | 最小栈 一、题设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) -- 将元素 x 推入栈中。pop() -- 删除栈顶的元素。top() -- 获取栈顶元素。getMin() -- 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push...
opencv | googlenet图像分类 #include <opencv2/opencv.hpp>#include <opencv2/dnn.hpp>#include <iostream>using namespace cv;using namespace cv::dnn;using namespace std;String model_bin_file = "bvlc_googlen...
结构体位段的长度计算 struct A{ unsigned char a1:2;};struct B{ char a1:3; int a2:29;};int main(){ struct A a = {0}; printf("a = %d", sizeof(a)); a.a1 = 5; printf("a = %d", a.a1); struct B b; b.a1 = ...
LeetCode | 路径总和 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \7 2 1返回true, 因为存在目标和为22 的...
LeetCode | 二叉树的最小深度 给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最小深度 2.题解思路两种解题思路,一种是层次遍历,注意需要左右节点都为空的时候return。第二种是...
LeetCode | 平衡二叉树 给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,3,null,null,4,4] ...
LeetCode | 将有序数组转换为二叉搜索树 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -10 5...
LeetCode | 二叉树的层次遍历 II 给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其自底向上的层次遍历为:[ [15,7], [9,20], [3]]题解思路层次遍历,将节点加入到链表中保存,...
LeetCode | 二叉树的最大深度 给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。题解思路1.用递归的方式,好像一到二叉树首先想到的就是递归;2.层级遍历的方式。/...
如何理解最小二乘法? 最小平方法是十九世纪统计学的主题曲。 从许多方面来看, 它之于统计学就相当于十八世纪的微积分之于数学。----乔治·斯蒂格勒的《The History of Statistics》1 日用而不知来看一个生活中的例子。比如说,有五把尺子:用它们来分别测量一线段的长度,得到的数值分别为(颜色指不同的尺子):之所以出现不同的值可能因为: 不同厂家的尺...
LeetCode | 对称二叉树 给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3说明:如果你可以运用递归和迭代两种方法解决这个问题,会很加分...
LeetCode | 数组尾部元素加一 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。题解思路...
OpenCV | CAMShift - 指定对象跟踪 文章目录一、原理介绍二、代码示例一、原理介绍CAMShift是基于MeanShift算法的基础上而来的,所以CAMShift又叫连续的自适应的MeanShift算法。MeanShift 算法如下图所示:首先在图中选取一个点作为中心点,然后得到一个窗口。然后计算窗口内所有点的均值,计算完得到一个点(图中蓝色的),然后将这个蓝色的点作为中心点又得到一个窗口。迭代若干次数后,中心的距离...
OpenCV | 稠密光流跟踪 - HF 文章目录一、API介绍二、代码演示三、结果展示一、API介绍稠密光流跟踪是将当前帧的所有像素点与前一帧比较,有变化的标记出来。对比的点比较多,不是对比变化的那几个特征点。所以速度较慢。没有稀疏光流的速度快。但有的时候效果比稀疏光流要好。calcOpticalFlowFarneback() 函数void cv::calcOpticalFlowFarneback( InputArray _pr...
OpenCV | 稀疏光流跟踪 - KLT 文章目录一、API介绍二、代码演示三、结果展示一、API介绍稀疏光流跟踪是在图像上的当前帧与前一帧的特征点比较,有变换的就标记出来。calcOpticalFlowPyrLK() 函数void calcOpticalFlowPyrLK(InputArray prevImg, InputArray nextImg, InputArray prevPts, InputOutputArray ...
CNN-卷积神经网络 从神经网络到卷积神经网络(CNN)我们知道神经网络的结构是这样的: 那卷积神经网络跟它是什么关系呢?其实卷积神经网络依旧是层级网络,只是层的功能和形式做了变化,可以说是传统神经网络的一个改进。比如下图中就多了许多传统神经网络没有的层次。 卷积神经网络的层级结构 • 数据输入层/ Input layer • 卷积计算层/ CONV layer...
LeetCode | 判断两个树是否相同-C++ 给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1 ...
LeetCode | 合并两个有序数组-C++ 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2,...
LeetCode 最后一个单词的长度 -C++ 给定一个仅包含大小写字母和空格 ’ ’ 的字符串,返回其最后一个单词的长度。说明:一个单词是指由字母组成,但不包含任何空格的字符串。示例:输入: “Hello World”输出: 5题解思路用strtok来分割字符串,注意leetcode里好像不能用线程安全的strtok_s。class Solution {public: int lengthOfLastWord(stri...
opencv 绿幕背景视频抠图 文章目录一、说明二、程序实例三、结果展示一、说明在视频中采用KMeans或者GMM的算法效率太低了,用来做视频抠图效果不好,这里使用了一个更加便捷的方式。就是HSV格式。由于在视频中只有的绿色的背景和前景的人物,且将HSV归一化为:H 0 - 180S 0 - 255V 0 - 255所以在HSV格式中绿色的范围是:H 35 - 155S 43 - 255V 46 - 255...
opencv 证件照背景替换-KMeans 文章目录一、步骤说明二、代码实例三、结果展示一、步骤说明使用了KMeans图像分割,也使用了GMM高斯混合算法,但是感觉KMeans的效果好点。整体的步骤:数据组装;KMeans分割;背景去除;遮罩生成;遮罩模糊,(视情况而定,可以不做);通道混合输出;完成。二、代码实例#include <opencv2/opencv.hpp>#include <i...
LeetCode 最大子序和 -C++ 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。题解思路初始化一个最大值,将每个元素一直相加,如果相加后大于最大值那么...
LeetCode 删除排序链表中的重复元素 -C++ 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3题解思路有两种思路:(1)用基本费的链表删除的方式,将数据相等的节点删除。(2)新增一个链表,用递归的思想return新的链表。第一种:/**...
LeetCode 比较含退格的字符串-C++ 给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。示例 1:输入:S = "ab#c", T = "ad#c"输出:true解释:S 和 T 都会变成 “ac”。示例 2:输入:S = "ab##", T = "c#d#"输出:true解释:S 和 T 都会变成 “”。示例 3:输入:S = "a##c",...
Sift中尺度空间、高斯金字塔、差分金字塔(DOG金字塔)、图像金字塔 今天看到一个写的很好的关于SIFT和高斯金字塔的博客,必须要转载一下,哈哈哈哈~。一、 图像金字塔图像金字塔是一种以多分辨率来解释图像的结构,通过对原始图像进行多尺度像素采样的方式,生成N个不同分辨率的图像。把具有最高级别分辨率的图像放在底部,以金字塔形状排列,往上是一系列像素(尺寸)逐渐降低的图像,一直到金字塔的顶部只包含一个像素点的图像,这就构成了传统意义上的图像金字塔。获得图...
opencv Grabcut-抠图 Grabcut原理见:https://blog.csdn.net/zouxy09/article/details/8534954grabCut() 函数cv::grabCut(image, //输入图像 result, //分段结果 rectangle, // 包含前景的矩形 bgModel,fgModel, // 前景、背景 1, ...
LeetCode 实现strStr()-C++ 实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = "hello", needle = "ll"输出: 2示例 2:输入: haystack = "aaaaa", needle = "bb...