主页

C++设计模式 类图的绘制(mermaid Js)

写在前面 classDiagram Class01 <|-- AveryLongClass : Cool <<interface>> Class01 Class09 --> C2 : Where am i? Class09 --* C3 Class09 --|> Class07 Class07 : equals() Class07 : Object[] elementData Class01 : size() Class01 : int chimp Class01 : int gorilla class Class10 { >>...

阅读更多

Leetcode233数字1的个数 容易理解的组合数学方法

题目 给定一个整数 n,计算所有小于等于 n 的非负整数中数字 1 出现的个数。 示例 1: 输入:n = 13 输出:6 示例 2: 输入:n = 0 输出:0 提示: 0 <= n <= 1e9 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/number-of-digit-one 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 解题思路 这里面的例子有问题, 说是 0~10^9, 结果早就超出 1e9 了… 首先来看这样一个例子:13, 怎样来计算数字 1 的个数呢? 一个比较直观的思路就是先计算1~10中数字 1 的个数, 然后计算11~13中数字 1 的个数. 显...

阅读更多

使用mac的applescript定制sublime执行c程序弹出终端

写在前面 最近又开始折腾编辑器了, 当然还是一个历史遗留问题, 我最爱的Sublime还是不能通过终端执行C/C++程序, 或者就是执行完之后直接退出了, 绕了一圈, 从每一个程序中加上system(read);算是一个折中的方案, 但是终归有点麻烦, 采用AppleScript(命令行中使用osascript -e)的方法当然可以, 但是我找了半天也没一个能跑明白… 只能说自己功力不够 针对Terminal 下面倒是一个可以通过applescript跑起来的例子, 就是对iTerm不行, 只能对系统默认的终端(Terminal.app)来操作.. 还是有点鸡肋的. 这个命令我参考了1, 并做了一些改动. # double `-e` osascript -e 'tell app...

阅读更多

C++字符串字面量""s的使用方法

写在前面 前几天看lc题解看到一个C++写法:""s, 感觉之前没见过, 后来查看一番cppreference1之后发现这个语法竟然是一个C++14时候出现的字符串字面量定义的简洁语法, 下面来具体看看: 代码 #include <string> #include <iostream> // must with stdc++14 void print_with_zeros(const std::string note, std::string const& s) { std::cout << note; for (const char c : s) { (c ? std::cout << c ...

阅读更多

C++中vector使用c字符时的小坑与分析

问题与解决 最近看看C++11标准, 准备用用新的range-based for语法, 但是一个例子让我有点困惑, 就是下面这段代码: #include <bits/stdc++.h> using namespace std; void t1() { vector<string> vs{'a', "abc"}; for (int i = 0; i < vs.size(); i++) { cout << vs[i] << " "; } cout << endl; } int main(int argc, char const *argv[]) { t1(); ...

阅读更多

用opengl绘制winxp版扫雷的墨镜笑脸

写在前面 最近看看OpenGL的东西, 学了一些基础的语法, 所以用来做点东西, 用基本的点线多边形等来绘制一个Windows XP中经典的游戏扫雷里面的标志性笑脸, 如下图: 思路 这个笑脸有四种形态,分别是初始状态的笑脸, 点击时候的o型嘴, 赢的时候的墨镜脸和输了时候的伤心脸, 下面通过简单的直线和圆来绘制, 都是简单图形, 本质上其实都是点的绘制, 这里我封装了一下函数, 调用会方便一些, 分别是通过vector<GLint>表示的点, 这样用initializer_list时候会方便很多. 其次就是一些小细节, 例如圆的绘制中的角度问题(这里就是嘴的绘制), 还有键鼠事件的交互, 我觉得熟悉了这个流程之后, 主要的思路就都放在点的坐标上了, 这里我建议...

阅读更多

C++字符串大小比较的踩坑

坑 最近学习C++11中的initializer_list这一新特性, 一个实例是关于字符串比较大小的, 代码如下: cout << max({string("Fff"), string("Eoa"), string("Acc")}) << endl; 运行结果如下: Fff 很显然最大值就是字符串"Fff"(依字典序), 但是我觉得string这个关键字可以去掉, 也就是将上述代码改为: cout << max({"Fff", "Eoa", "Acc"}) << endl; 但是这时候结果就变成了: Acc 这是为什么呢? 分析 一开始我以为问题出在max()函数的身上, 找出源码后发现其本质还是逐元素比较...

阅读更多

关于二叉树插入空节点占位的问题

写在前面 今天刷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) # 首先定义树的...

阅读更多

Total views.
您是Zorch的第 个小伙伴
Hits