数据结构和算法学习记录-做题记录1
缺失数字给定一个包含 0, 1, 2, …, n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。
12345678910示例 1:输入: [3,0,1]输出: 2示例 2:输入: [9,6,4,2,3,5,7,0,1]输出: 8
这道题很简单,但是解答方法很灵活
题目
123456789101112131415161718192021class Solution {public: int missingNumber(vector<int>& nums) { // 利用下标找出缺失的数字,需要两次遍历 vector<char> list(nums.size()+1,0); for (int i = 0; i < nums.size(); i++) { list[nums[i]] = 1; } for (auto i = 0 ; i < list.size(); i++) { if (list[i] == 0) { retur ...
数据结构和算法学习记录-bfs
二叉树的层序遍历给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
题目地址
这题其实并不难,但是我第一次提交的代码只超过了20%的人
123456789101112131415161718192021222324252627282930313233343536class Solution{public: vector<vector<int>> levelOrder(TreeNode* root) { vector<vector<int>> result; queue<TreeNode*> nodeQueue; // 这个队列存放了每一层的节点,按照从左到右的顺序 TreeNode* node; if (!root) return result; nodeQueue.push(root); while (!nodeQueue.empty()) // 从这里开始取出每一层 ...
数据结构和算法学习记录-dfs
N叉树的最大深度给定一个 N 叉树,找到其最大深度。
最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。
输入[1,null,3,2,4,null,5,6]
输出3
地址
这道题很简单
123456789101112131415161718192021222324252627class Solution { public: int depth = 0; int maxDepth(Node* root) { loop(root,1); return depth; } inline void loop(Node* root, int depth) { if (root == nullptr) { return; } if (root->children.size() != 0) ...
数据结构和算法学习记录-二叉树
线索二叉树的遍历和线索化123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100#include <stdio.h>#include <stdlib.h>enum{ Link, // 正常指向下一个节点 Thread // 指向线索节点} Tag;typedef struct TNode{ char data; struct TNode *lchild; struct TNode *rchild; unsigned char ltag; unsigned char rtag;} TNode;TNode *pre = NULL;TNode *createNo ...
数据结构和算法学习记录-链表
拉丁方阵问题1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253#include <stdio.h>#include <stdlib.h>typedef struct Node{ int data; struct Node *next;} Node;Node *createLinkedList(int length){ Node *last, *this, *head; head = malloc(sizeof(Node)); head->data = 0; head->next = NULL; last = head; for (int i = 1; i < length; i++) { this = malloc(sizeof(Node)); this->next = NUL ...
树莓派的GPIO,蓝牙,摄像头等基本配置
访问树莓派打开ssh服务将SD卡连接到电脑上并打开,直接新建“SSH”文件(无后缀)即可
配置热点先把树莓派连接至你的服务器,按照下面的方式配置热点以便于在任何时候连接到树莓派进行调试
安装软件输入以下命令来完成创建ap所需要的软件的安装
12345sudo apt install hostapd gitsudo apt install dnsmasqgit clone https://github.com/oblique/create_apcd create_apmake install
编辑/etc/create_ap.conf,在里面修改你的ap名称和密码,以及其他配置
使用以下命令启动ap并设置为开机启动
12sudo systemctl start create_apsudo systemctl enable create_ap
连接到ap,使用上面配置文件中的GATEWAY地址通过ssh连接到树莓派
GPIO的配置除一般的gpio配置外,有时候我们还需要配置远程访问gpio来便于我们从计算机调试GPIO应用
首先安装gpiozero,这是一个用户友好的python GPIO ...
CLion+openocd+stm32cubemx和stlink配置嵌入式开发环境
起因用CLion当然是因为Keil太难用啦(。・∀・)ノ
安装软件你需要安装以下软件
clion
stm32cubemx
openocd
arm-none-eabi-gcc(需要配置环境变量)
mingw(我也不确定需不需要这个,装一个吧)
创建项目创建Clion项目以stm32f103zet6作为例子创建一个闪烁led的项目
选择这个来创建STM32项目,设置好路径后等待加载
点击这里的蓝色字来打开stm32cubemx完成进一步配置
使用stm32cubemx生成代码点击这里切换你的芯片
切换标签后按照需要配置GPIO
下面是很关键的一步,配置debug
如果你使用SW连接到开发板,必须按照以下方式配置,否则无法下载程序
到达下一步修改项目设置
在另一个菜单中更改这里的设置
完成之后点击生成代码,选择yes覆盖原项目
openocd开发板配置这部分其实我也不是很懂如何操作。。。。但是我的配置能用。。。
选择一个开发板预设并复制到项目中,我们将在这个预设的基础上进行修改
打开复制的开发板配置文件,进行以下修改
12345678910111213141516171 ...
快速打造在线软件安装包
前言我们常常需要分发自己编写的软件,但是对于大部分情况来说,为了让用户能够使用我们的软件,用户都需要安装Runtime,我们常用的编程语言(Java,Python,Nodejs)等都需要安装对应的运行环境,他们的运行环境在一般的电脑上不一定安装过,在分发使用此类编程语言的程序时我们通常的做法是附带一份运行环境
但是这样做就会带来一个问题:众所周知,国内能在浏览器内直接下载文件的网盘少之又少,就算是qq群文件下载也十分慢,这大大影响了用户获取软件的体验
目标快速制作一个小体积的在线软件安装包,该安装包能够快速分发,在安装时将会使用多线程的方式快速下载运行环境完成安装
本文将以mirai项目的Windows一键安装包为例来举例如何使用WinRAR完成我们的目标
效果展示mirai是一个使用jvm的qq机器人项目,要运行他首先需要安装java和javafx
以下是效果图
点击安装之后将会打开一个cmd窗口,程序将会自动执行运行环境和jar的下载
自解压文件结构如下
开始第一步:存放我们的文件本项目使用coding来存储文件,使用方法很简单
在coding创建一个仓库
将仓库设置为公开
...
Android逆向初体验-云班课app逆向
概述反正就是网课app了,逆向之后可以实现签到什么的
本文仅为学习用途,请勿使用本文相关信息进行其他活动
准备在网上找了一下分析该app的文章,但是只找到一篇2017年的文章,链接
看了文章,发现很多细节的地方并没有说清楚,于是只好自己上手操作
开始首先抓包
抓https有时候可能需要一个xposed模块让系统信任所有证书
JustTrustMe
很显然他的登录协议已经发生了改变,在请求头部多出了一个signature,如果不带signature就无法登录,查看了其他数据包之后分析这个参数是客户端生成的
为了找出这个sign生成的算法只好通过逆向
登录1.大致浏览使用jadx打开
文章中的app并没有加固,但是当我开始分析的时候它已经加固了
加固后的app直接分析看不到任何程序相关的源代码
查找网上各类资料后最终选择使用xposed来脱壳,插件叫做易开发
很幸运使用这个模块成功脱壳,按照文章的思路进行搜索,找到了两个函数可能返回签名
为了找出登录是使用了哪一个方法,只好搜索登录的url来进一步确认
通过查找该变量的用例找到了构造登录数据包的方法
而这里的b就是构造请求头的方 ...
QQ机器人开发尝试-实现一个获取疫情信息的机器人
准备最近全国都在密切关注2019-ncov的最新信息,我群的群友们也是,于是我就开发了这样的一个小程序来帮助大家获取最新信息
数据来源丁香园,感谢它为我们提供的最新数据
平台机器人平台还是使用广泛使用的酷q,但是这个机器人平台的开发语言居然是易语言?!
好在有大佬提供了兼容层插件,可以让我们用websocket或者是http使用接口,链接
开发语言这次就使用python吧,当然也有大佬为我们提供了调用这个接口的库链接
配置第一步当然是配置好机器人和我们的程序了
首先使用以下代码设置好一个websocket服务器让机器人链接
123bot = CQHttp(access_token='your-token', enable_http_post=False)bot.run(host='127.0.0.1', port=8080)
然后配置机器人,找到httpapi插件的配置文件,更改如下位置
1234"ws_reverse_api_url": "ws://127.0.0.1:6700/ws/api ...