关于二叉树插入空节点占位的问题
写在前面
今天刷lc的每日一题, 碰到了关于二叉树的题目, 本来是简单层序遍历(BFS)出结果的, 但是我在本地测试的时候总是出问题, 层序遍历出来的结果竟然跟测试样例的二叉树长得不一样了!
看下面这个例子:
1
\
2
\
3
/ \
4 5
上面这颗树的层序遍历应该是:[1,None,2,None,3,4,5], 但是我的测试代码却得到了:
第1层元素: [1]
第2层元素: [None, 2]
第3层元素: [None, 3, 4, 5]
就是说直接忽略了空节点, 这可是大大影响了树的结构了.. 下面尝试解决这个问题.
代码(Python)
# 首先定义树的...
组合学笔记(七)möbius函数的计算
写在前面
这次总结一下计算 Möbius 函数的一些内容, 包括一些例子, 具体地给出 Möbius 函数的一些用途.
一个平凡的例子: 微积分基本定理的有限差分模拟
设$P=\mathbb N$,(chain, 链) 则由 Möbius 函数的归纳定义, 代入计算,
\[\begin{cases}
\mu(x,x)=1,\quad\forall x\in P, \\[5pt]
\mu(x,y)=-\sum_\limits{x\le z<y}\mu(x,z),\ \forall x<y\in P,
\end{cases}\tag1\]
可以得到:$\forall i,j\in P$,
\[\mu(i,j)=\begin{cases}
1,&i=j,\\
...
Mac m1使用sublime格式化python,c++,json的最佳方式
写在前面
越来越离不开Sublime Text(下称ST) 这款轻量级跨平台编辑器了, 满足我对轻量化编辑代码的所有要求, 并不像VSCode一样臃肿, 内存占用也不大, 但是有一点不太好的就是现在插件市场的插件很多都不维护了, 就导致现在大多数开发者都转向vscode阵营了(我不想做大多数).
我可是放不下这款超级棒的编辑器的, 不管是刷LeetCode还是写小的测试程序, 都让我觉得非常舒服. 但是最近遇到了一个问题, 就是在ST中写C++时候代码格式化总是不好用, 一开始我用的是一款叫做CoolFormat的插件, 但是遇到C++代码总是提示Cannot format this file, 网上找到的推荐插件是SublimeAStyleFormatter1, 据说用来格式化C...
Python的defaultdict对象使用自定义类型的方法(以sortedlist为例)
写在前面
最近写周赛题, 逃不开的一种题型是设计数据结构, 也就是第三题, 做这种题需要的就是对语言中的容器以及常用排序查找算法的掌握, 而我只熟悉了最基本的一些方法, 做起这些题来总是超时…
为了搞定这些题, 我决定学习一下大佬们的做法, 特别是优先队列的方法维护有序容器以及有序列表等容器, 这些都在Python中封装好了, 用起来很是方便, 但是采用defaultdict的时候, 其缺省数据类型常常需要与题目给出的特定结构匹配, 这就需要定义一个新的数据类型, 下面我就以一种十分常用的结构SortedList为例, 设置自定义的数据类型(本例为将默认的升序列表变成降序列表).
其他的数据结构当然也可以根据下面列出的方法来改, 主要知识点就是函数与类的运用了. 这里我参...
Opengl基础(二)键盘事件控制
写在前面
键盘字符对应
ESC键: VK_ESCAPE (27)
回车键:VK_RETURN (13)
TAB键:VK_TAB (9)
Caps Lock键:VK_CAPITAL (20)
Shift键:VK_SHIFT (16)
Ctrl键:VK_CONTROL (17)
Alt键:VK_MENU (18)
空格键:VK_SPACE (32)
退格键:VK_BACK (8)
左徽标键:VK_LWIN (91)
右徽标键:VK_RWIN (92)
鼠标右键快捷键:VK_APPS (93)
Insert键:VK_INSERT (45)
Home键:VK_HOME (36)
Page Up:VK_PRIOR (33)
PageDown:VK_NEXT (3...
在macos(m1)中成功构建soil库的方法
写在前面
最近跟着网上的教程学学OpenGL, 但是却倒在了配置环境的第一步, 这个项目需要使用一个名为Simple OpenGL Image Library (SOIL)1的库, 实际上就是对OpenGL接口的进一步封装, 用于添加纹理, 但是不巧的是这个库所使用的Carbon API2在MacOS Catalina已经不支持MacOS的api了3, 就在我准备放弃的时候, 一个新的名为SOIL2的库4走进我的视线, 竟然还是从O’Reilly中的免费阅读项目中找到的, (这本书还算挺新的, 可以申请免费试看) 有了这个我就直接进入SOIL2的官方主页5, 然后开始一系列的配置~
但是就是这配置, 却让我折腾了快一天, 最后竟然只是因为brew的一个小小的包影响的.. 实在是不应...
Ffmpeg的各种常用操作总结
写在前面
以前一直觉得一款名叫格式工厂的软件特别厉害, 什么媒体格式都能互相转化, 后来发现格式工厂其实就是一个套壳的FFmpeg, FFmpeg1这款命令行软件可以说是相当强大了, 支持音频视频等的各种转换, 以及图片等的互相转换, 甚至还能捕获网络上的m3u8文件, 可以参考我之前的关于如何下载钉钉直播视频的文章. 总之, 学会了一些基本的命令行操作之后, 以后就完全不需要下载其他软件了, 不仅方便还支持批处理操作, 简直就是必备的效率工具~
下面我总结一下我常用的几个结合FFmpeg和imagemagick的媒体文件处理操作, 主要涉及视频格式转换, 视频到GIF的转换等, 主要参考当然是FFmpeg的官方文档2, 当然也有一些现成的国外博客以及Stack Overflow....
C,c++可变参数特性分析与实例
写在前面
最近在看的一份关于2048游戏的OpenGL实现的C语言源代码, 其中用到了一个比较独特的语法, 叫做可变参数, 乍一看还以为是C++11中引入的可变参数模板, 实际上却是C语言独有的特性, 下面来分析一下这个语法特性, 并用来实现一些小例子, 以及C和C++的这类型语法的一些对比. 参考了Wikipedia, cppreference.com和其他一些博客文章.
下面是一些需要的头文件, 这里采用了C++写, 如果用C的话改成stdarg.h之类即可
#include <cstdarg> // you need to include this to use variable numbers of args
#include <cstdio>
...
共计 455 篇文章,57 页。
您是Zorch的第 个小伙伴
Hits