- 博客(223)
- 收藏
- 关注
原创 WPF——提高开发效率
1. 快速定义类的属性与函数输入ctor+Tab键:定义类的构造函数 public Student() { }输入prop+Tab键:定义不带private字段的属性 public int MyProperty { get; set; }输入propfull+Tab键:定义带private字段的属性 private int myVar; public int MyProperty { get { return myVar; } set { myVar =
2022-05-11 16:19:41 471
原创 WPF——主窗体常规改造
窗体设置窗体菜单栏框隐蔽WindowStyle="None"窗体可拖动MouseDown="Window_MouseDown" private void Window_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { if (e.LeftButton == System.Windows.Input.MouseButtonState.Pressed) this.Dr
2022-05-10 16:11:27 314
原创 C#——对Json格式的序列化与反序列化
类using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Runtime.Serialization;namespace ConsoleApp1{ [DataContract] internal class Student { [DataMember]
2022-02-10 18:45:58 952
原创 WPF日报
2022/1/41. 动态图标在模板中添加Image控件,通过Source设定原始图标删除原来的IsMouseOver IsPressed添加Triggers,Proproty="IsMouseOver",Value="True",重置Image的Source添加Triggers,Proproty="IsPressed",Value="True",重置Image的Source <Trigger Property="IsMouseOver
2022-01-05 11:45:16 599
原创 WPF——入门笔记
一、布局StackPanel:水平或垂直排列元素,当剩余空间不足不会进行换行或换列WrapPanel:水平或垂直排列元素,当剩余空间不足会进行换行或换列DockPanel:根据容器的边界排列元素,Dock.Top,Left,Right,BottomGrid:类似于Table表格,可以灵活设置行和列UniformGrid:指定行和列的数量,均分有限的容器空间Canvas:使用固定的坐标设置元素的位置二、控件ContentControl:Button(按钮),GroupBox(组框)ItemC
2021-12-23 16:16:38 400
原创 leetcode——剑指offer1
树剑指offer1、先序中序重建二叉树——构建中序哈希加快搜索,先序找根,中序划分左右子树2、树的子结构——遍历树,看当前节点是否为子树结构,子树结构要求根左右均相等直至匹配完毕3、生成二叉树的镜像——交换节点的左右子树,递归处理左右子树4、对称的二叉树——递归判断左右子树交叉是否相等,注意递归结构true and false 的条件5、二叉搜索树与双向链表——中序遍历逻辑,cur->right=root,cur->right->left=cur,cur=cur->rig
2021-10-08 10:31:30 278
原创 C++——多态与虚函数的理解
一、问题多态的作用?当父类指针指向子类对象时,会根据虚函数表调用子类的虚函数重写的作用?当父类指针指向子类对象时,由于指针类型为父类,调用的依旧是父类的非虚函数当子类指针指向子类对象时,由于指针类型为子类,调用的是子类的非虚函数二、代码验证class Base{public: Base() { } void function() { cout << "base: not virtual" << endl; }
2021-09-23 18:48:31 184
原创 C++——关于构造函数与析构函数能否调用虚函数的问题
一、代码class A {public: A() { cout << "A construction." << endl;; virfun(); }; virtual ~A() { cout << "A disconstruction." << endl; virfun(); }; virtual void virfun() { cout
2021-09-14 09:11:07 311
原创 leetcode——双指针总结
二、高频题目88. 合并两个有序数组——双指针1、防止nums元素被改写,先摘录大的元素放入nums空白处2、交叉摘录数组元素3、单方摘录某数组元素
2021-08-27 11:10:49 307
原创 leetcode——BFS图总结
133. 克隆图——DFS1、特判2、递归条件,结点访问过,返回map对应的val3、克隆当前节点4、遍历当前节点邻居,进行邻居更新,同时邻居克隆5、返回当前节点——BFS1、特判结点为空时,返回nullptr2、申请哈希表,key用于记录原结点,value用于记录新结点3、克隆当前结点,放入队列4、广度遍历,访问队列头的邻居,若未访问过则克隆并加入队列,克隆当前结点的邻居5、返回克隆后key对应的val200. 岛屿数量——BFS1、遍历二维矩阵2、遇到1时,压入队列,对其进
2021-08-26 16:31:24 387
原创 leetcode——优先队列
二、高频题目973. 最接近原点的 K 个点——排序1、sort,修改cmp根据x2+y2对坐标点进行排序2、返回数据排序好的前k个元素——优先队列1、建立大根堆,将数据前k个元素放入堆,first为计算结果,second为坐标索引2、从第k+1个元素扫描,小于当前堆顶,则代替堆顶3、将堆转向量,这里需要建堆带上向量的索引23. 合并K个升序链表——分治合并1、写出两链表合并逻辑2、编写分治合并,根据数组的left和right进行递归结束,二分,合并操作3、调用分治合并——利用堆
2021-08-22 18:42:20 721
原创 leetcode——哈希表与哈希集合总结
一、基础介绍无序容器二、高频题目两数之和——哈希表记录数字与索引1、遍历数字,哈希表中查找target-nums[i]2、找不到,count[nums[i]]=i3、找得到,返回{i,count[target-nums[i]]}350. 两个数组的交集 II——哈希表记录数字与出现次数1、哈希表记录nums1数字出现次数2、遍历nums2,如果元素在hashtable出现次数大于0,计数-1,加入ans128. 最长连续序列——哈希集合去重1、哈希集合去重nums2、遍历哈希集合3
2021-08-18 12:19:38 669
原创 leetcode——栈总结
一、实现代码#include <iostream>#define MAXSIZE 100using namespace std;struct stack { int* base; int* top; int stacksize; stack() { base = new int[MAXSIZE]; top = base; stacksize = MAXSIZE; } //压入——top所指位置赋值,top++ int push(int e
2021-08-17 11:04:07 255
原创 项目——基于Oracle实现一个简易版的教务系统
一、背景知识教务系统包含多个对象,多种功能,它是一种多对象访问及维护的数据库。以下,本人根据现实需求,设定一个交易版的教务系统。二、需求分析(功能确定)三、概念分析(E-R图)设计实体:学生、老师、课程、班级现实关系:一个老师可以教多个课程,多个老师可以共同教一个课程一个老师可以教多个班级,多个老师可以共同教一个班级一个学生可以学习多个课程,多个学生可以共同学习一个课程一个学生只能属于一个班级,多个学生可以共同属于一个班级确定基础ER图实体与关系的属性实体属
2021-08-15 18:09:10 3023 1
原创 leetcode——队列总结
一、实现代码#include <iostream>#define MAXSIZE 100using namespace std;struct Queue { int *data; int front; int rear; Queue() { data = new int[MAXSIZE]; front = 0; rear = 0; } //压入——rear+1 int push(int elem) { if ((rear + 1) % MAXSIZE == fron
2021-08-14 17:48:18 429
原创 leetcode——链表总结
一、链表创建struct ListNode { int val; ListNode* next; ListNode() : val(0), next(nullptr) {} ListNode(int x) : val(x), next(nullptr) {} ListNode(int x, ListNode* next) : val(x), next(next) {}};二、高频题目206. 反转链表——链表原地反转1、初始化前驱pre为nullptr2、创建遍历指针cur3、wh
2021-08-13 16:39:53 302
原创 项目——基于MFC的成绩管理系统
一、准备工作二、设置实体类底层逻辑包含两个类,一个为Student,存储学生的个人信息,一个为Management,管理学生的个人信息;三、设置UI基础版1、工具控件:列表,编辑框,静态文本,下拉框,按钮;2、列表控件属性修改3、下拉列表属性修改...
2021-08-07 16:42:07 10292 24
原创 项目——C++规则下的数字解析器
一、语言规则数值(按顺序)可以分成以下几个部分:若干空格一个 小数 或者 整数(可选)一个 ‘e’ 或 ‘E’ ,后面跟着一个 整数若干空格小数(按顺序)可以分成以下几个部分:(可选)一个符号字符(’+’ 或 ‘-’)下述格式之一:至少一位数字,后面跟着一个点 ‘.’至少一位数字,后面跟着一个点 ‘.’ ,后面再跟着至少一位数字 一个点 ‘.’ ,后面跟着至少一位数字整数(按顺序)可以分成以下几个部分:(可选)一个符号字符(’+’ 或 ‘-’)至少一位数字注意:
2021-07-24 11:47:15 263 2
原创 C++——智能指针auto_ptr、unique_ptr、share_ptr、weak_ptr
auto_ptr相对于普通指针分配内存,需要自己new and delete,若不delete,就会造成内存泄露。auto_ptr智能指针可以做到,指针失效时自动回收内存空间。该指针可以进行复制构造与赋值构造,所以可能造成两个(或多个)指针指向同一内存空间的情况,导致内存空间被释放两次(或多次),造成错误。unique_ptr为了改进auto_ptr的漏洞,unique_ptr智能指针不允许复制构造与赋值构造,也即编程开始便约束了指针无法指向同个空间,避免内存空间被多次释放的错误。但unique_p
2021-07-21 17:52:40 357 3
原创 leetcode——377. 组合总和 Ⅳ
思路——动态规划无需打印路径的使用动态规划代替回溯dp[j]含义:target为j时,使用[0~i]的排列数递推公式:dp[j]+=dp[j-num[i]]dp初始化,第一个元素为1,其他元素为0遍历顺序:先背包后物体(排列) 先物体后背后(组合)代码class Solution {public: int combinationSum4(vector<int>& nums, int target) { vector<int> d
2021-07-21 08:54:34 165
原创 leetcode——72. 编辑距离
思路——动态规划dp[i][j]含义:代表以i为结尾下标,与以j结尾下标的字母之间的最小编辑距离递推方程:4个操作,不动,word1增,word2增,替换元素if(word[i-1]==word[j-1]) dp[i][j]=dp[i-1][j-1];else dp[i][j]=min(dp[i-1][j],dp[i][j-1],dp[i-1][j-1])+1;dp数组初始化:空字符与word1 word2的最小编辑距离遍历顺序:从左至右,从上至下返回结果:dp[word1.siz
2021-07-20 20:28:21 161
原创 leetcode——131. 分割回文串
思路——回溯单层分割路径 如“abc” 则有 a,ab,abcsubstr(begin,len)——记住第二个参数为len回文串判断,只需对size=1特殊处理,其他进行反转判断是否相等代码class Solution { vector<vector<string>> ans; vector<string> path; void backtracing(string& s, int startindex) {
2021-07-20 18:39:52 132
原创 leetcode——526. 优美的排列
思路全排列基础上多加一个条件返回答案长度,只需要申请一个变量计数,并动态记录path的长度代码class Solution { int count = 0; void backtracing(int n, vector<int>& used,int path_len) { if (path_len == n) { count++; return; } for (i
2021-07-20 08:55:28 163
原创 leetcode——77. 组合
思路无需去重——无需排序剪枝——当前路径的最大深度需大于等于k不变的参数 使用 引用参数代码class Solution { vector<vector<int>> ans; vector<int> path; void backtracing(int& n,int& k,int idx){ //递归终止条件 if(path.size()==k){ ans.emp
2021-07-19 21:56:07 118
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人