- 博客(40)
- 收藏
- 关注
原创 6.s081 lab3
其中要注意的地方就是判断是否是最底层,如果是最底层,就不进行递归了。然后在相应地方定义并在exec.c中按要求添加代码即可。主要参考vm.c中的freewalk,第一个实验:打印页表。
2023-12-25 16:06:32 434
原创 二叉树遍历
具体就是每次循环先找到左子树中的最右节点,根据其右孩子为nullptr或者p,判断是否已经连接,如果是前序遍历,未连接时直接进行访问,并让p向左走,pre连接p,如果是中序遍历,已连接时(代表左边已经访问过)直接进行访问,并重置pre,p向右走。如果没访问过,当前节点入栈,向右边走。非递归算法看起来其实都差不多,都是利用栈,先找到最左边的节点,把路上的节点不断保存(放入栈内),到了叶子节点就出栈,然后往右边走一步。后序遍历因为是左、右、中的顺序,可以倒过来中、右、左,把前序遍历修改最后再翻转答案即可。
2023-06-27 15:32:38 156
原创 java 观察者模式
定义:在对象之间定义了一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象会收到通知并自动更新。相当于微信订阅,你订阅了公众号,在它更新时就会自动给你发送消息。没有订阅它就不会给你发送消息。图片转自https://blog.csdn.net/wanggang514260663/article/details/86138144角色:主要有四个角色:抽象被观察者角色:也就是一个抽象主题,它把所有对观察者对象的引用保存在一个集合中,每个主题都可以有任意数量的观察者。抽象主题提.
2020-08-10 05:53:01 110
原创 简单工厂模式 C++
#include <iostream>using namespace std;class Product{public: virtual void Show() = 0;};class ProductA: public Product{public: void Show() { cout << "A" <&...
2020-04-07 22:49:31 142
原创 42. 接雨水【leetcode】
原题地址:https://leetcode-cn.com/problems/trapping-rain-water/利用栈,栈保存位置。class Solution {public: int trap(vector<int>& height) { int ret = 0, i = 0; stack<int> st;...
2020-04-03 16:00:38 134
原创 一些关于C++、windows编程的学习
1、extern "C":因为C++和C对编译后的函数符号和外部变量符号修饰方式不一样。加上这个,使其修饰的变量或函数是按照C语言方式编译,连接器才能正确解析。在DL显式链接中,被修饰的函数就要加上这个,不然在调用的时候,函数名就要写成经C++编译器修饰过后的函数名。而不同C++编译器修饰方法也可能不同,所以还是加上这个比较方便。2、...
2020-03-26 18:46:02 152
原创 win32 剪贴板
wstring wsCopy = _T("");if (m_pUser->IsVisible()){ wsCopy = m_pUser->GetText();}else{ wsCopy = m_prUser->GetText();}int ret = ::OpenClipboard(m_hWnd);if (ret != 0){ int...
2020-03-26 10:41:08 201
原创 41. 缺失的第一个正数【leetcode】
原题地址:https://leetcode-cn.com/problems/first-missing-positive/题目上有要求是算法时间复杂度为O(n),并且只能使用常数级别的空间。核心思想就是利用原数组记录出现过的值。1、遍历数组,把数组中≤0或者>len的数都变为1,并且判断数组中是否已经存在1,不存在1那答案就直接为1。这时候数组就全为正数了,可以用负数标志一个数是否出现...
2020-03-19 12:50:34 115
原创 C++ 构造函数和析构函数是否可以为虚函数?构造函数里调用虚函数会怎样?
构造函数:在类中,构造函数不可以为虚函数。这是为什么呢?这要先了解一下vptr指针。什么是vptr指针呢?当类中声明虚函数时,编译器会在类中生成一个虚函数表。虚函数表是一个存储成员函数指针的数据结构,它是由编译器自动生成与维护的,virtual成员函数会被编译器放入虚函数表中。所以,当存在虚函数时,每个对象都需要有一个指向虚函数表的指针,这就是vptr指针。在实现多态的过程中,...
2020-03-18 22:09:04 374
原创 DLL的导出与使用 C++
DLL中导出函数的声明1、在函数声明中加上__declspec(dllexport)在需要导出的函数之前加__declspec(dllexport)即可。#include <iostream>using namespace std;__declspec(dllexport) int add(int a, int b){ return a + b;}__dec...
2020-03-15 17:25:51 476
原创 37. 解数独【leetcode】
原题地址:https://leetcode-cn.com/problems/sudoku-solver/dfs回溯法。不断用1到9尝试未填入的地方。假如有某处无法填入,就把此处重新变为'.'(未填入状态),并且回溯。在使用递归时要仔细,注意递归中参数的变化。class Solution {public: void solveSudoku(vector<vector...
2020-03-10 19:26:57 67
原创 C++ 线程同步
1、临界区用CRITICAL_SECTION结构对象保护共享资源。用EnterCriticalSection()和LeaveCriticalSection()函数去标识和释放一个临界区。所用到的CRITICAL_SECTION结构对象必须经过InitializeCriticalSection()的初始化后才能使用。如果有多个线程试图同时访问临界区,那么在有一个线程进入后其他所有试图...
2020-03-05 16:31:23 173
原创 用playground做Unity3d的一个2d小游戏的一些问题和学习
1、player在Y轴0以上无法显示,调整visiblity options属性.visiblity options中:sorting layer是自定义的标识符,哪个sortinglayer在前(在layer & tags中设置的先后顺序)哪个先渲染。sorting layer相同时order in layer的数值越小越先渲染。也就是说数值小的会在下层,大的在上层。2、Po...
2020-02-26 18:12:43 329
原创 windows编程 postmessage,postthreadmessage,sendmessage的区别
同一线程:postmessage:把消息放入线程的消息队列,通过消息循环分发到目标窗口。sendmessage:系统直接调用指定窗口的窗口过程。不同线程:postmessage:根据窗口句柄把消息放入指定窗口的所在线程的消息队列。也就是说,会接下去执行现在的线程,等窗口所在线程获得控制权,再通过消息循环分发到目标窗口。postthreadmessage:跟postmessage...
2020-02-23 14:49:02 704
原创 36. 有效的数独【leetcode】
原题链接:https://leetcode-cn.com/problems/valid-sudoku/一开始想的办法就是利用map保存数据,遍历整个数组三次。看了一些题解可以使用位运算。用三个数组保存横、竖、九宫格内的情况。例如x[i]就代表第i行的情况。维护x[i]内保存的数据。用&判断在同一行是否出现过,用|更新数据。一开始为0,可以看成000000000,在...
2020-02-15 18:25:14 78
原创 32. 最长有效括号【leetcode】
原题地址:https://leetcode-cn.com/problems/longest-valid-parentheses/给定一个只包含'('和')'的字符串,找出最长的包含有效括号的子串的长度。示例1:输入: "(()"输出: 2解释: 最长有效括号子串为 "()"示例 2:输入: ")()())"输出: 4解释: 最长有效括号子串为 "()()"...
2020-02-13 11:36:42 133
原创 看一篇关于单例模式文章之后的学习
单例模式:整个程序有且只有一个实例,该类自己负责创建自己的对象,并且保证只有一个实例。单例模式可以分为饿汉式和懒汉式:饿汉式:类加载时就进行实例化,启动较慢,但是线程安全。class Singleton //饿汉式{private: static Singleton *Instance; Singleton(){}; Singleton(const Singleton&...
2020-02-11 17:45:27 122
原创 KMP
KMP算法看了好多次,看一次忘一次,而且以前也没有深究一些东西。这次记录一下。先是求next数组,即最长相同前后缀长度。例如abcab,ab就是最长相同前后缀。。用双指针法,j在后,k在前。next[j]代表的是j之前(不包括needle[j])的最长相同前后缀长度-1(-1是为了便于跳转)求的时候主要有几种情况:needle[j] == needle[k]:相等的话nee...
2020-02-02 15:18:48 140
原创 25. K 个一组翻转链表[leetcode]
示例 :给定这个链表:1->2->3->4->5当k= 2 时,应当返回: 2->1->4->3->5当k= 3 时,应当返回: 3->2->1->4->5指针赋值不要连续赋值。思路就是先得到链表长度,再K个一组进行逆置,组与组之间的连接需要考虑用prev指针保存上一组最后一个结点。clas...
2020-02-01 11:42:48 72
原创 web前端
h1~h6标签:标题标签,h1标签在一个页面只能出现一次,可以提供搜索引擎优化p标签:段落标签,上下换行分段a标签:超链接<a href="">超链接</a> <!------点击会进行刷新-------><a href="javascript: void(0)">超链接</a> <!------不进行任何操作---...
2020-01-31 16:32:22 101
原创 git连接github使用
1、创建SSH KEY$ ssh-keygen -t rsa -C "xxxx@xxx"然后会在用户目录/。ssh里找到一个.pub的文件,复制内容到github上的设置内创建SSH KEY2、设置用户名邮箱这些信息,$ git config --global user.name "xxx"$ git config --global user.email "xxx@xx"...
2020-01-04 23:38:42 239
原创 2的次幂表示 蓝桥杯
开始那个+的位置总是弄不对,,最后总算想到用二进制最低位控制“+”#include <iostream>using namespace std;int g(int k) //输出最低位1{ for (int i=0;i<=30;i++) { if (1<<i&k) { return i; break; } } } i...
2018-03-19 21:52:48 268
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人