- 博客(23)
- 收藏
- 关注
原创 回溯算法2
分割问题举例,以给定的输入字符串str=“aabbacdd”为例,将str分割成一些子串,使每个子串都是回文子串,输出所有符合的子串。注意:子串的长度不定,说明你可以任意的分割。处理这个问题,除了使用穷举的思路,在逻辑上也没有更好的思路了。因此分割问题也是回溯算法的典型。
2023-03-08 11:58:35
88
原创 Unity基础使用
1.Unity中的脚本script的名字要和对应的class名字一致。脚本与Inspector:脚本中定义的public字段可以在Inspector界面中显示,并可以修改其值。注意:static成员不能显示在Inspector界面中,(可序列化与不可序列化相关概念)2.同一gameobject对象访问其他的的组件,可使用GetComponent<Component_Name>()函数GetComponent<>()函数返回组件对象,3.事件函数
2023-03-02 15:29:55
485
原创 二叉树篇1-遍历-递归遍历,栈遍历的使用
本篇的重点是比较并理解递归与迭代的写法。先验: 关于二叉树的概念,种类在STL容器篇中说明过,因此这里直接用
2023-02-21 11:06:09
587
原创 前k个高频元素-堆排序
这里展示了priority_queue这一数据结构的应用,有一些注意的点:1.priority_queue默认是大顶堆,这里使用了小顶堆,原因是优先队列的pop()函数删除的是队首的元素,为了保存前k个频率最高的元素,只能将频率低的元素放在堆顶,删除。因此无法用排序的方法得到数据流中的前k个最大的元素。统计频次已经有很多经验了,使用unordered_map结构可以很快的统计频次信息,则关键的问题是如何得到前k的元素(这里我避免使用了“(堆更像是过滤的操作,把不符合的都筛出去,得到前面的)出前k的元素。
2023-02-20 20:20:20
65
原创 第一篇-安装CentOS7
首先,1.linux系统有很多版本,流行的版本有CentOS、Ubuntu。例如选择CentOS版本,这个版本通常不会经常更新,比较稳定。(注:如果是第一次在虚拟机上安装Linux系统,建议使用经典模式安装,虚拟机自动完成一些配置,先用起来)系统启动时网卡默认是关闭的,此时无法联网,所以首要:cd /etc/sysconfig/network-scripts,将ONBOOT项设置为yes。//第一次使用yum,出现Could not retrieve mirrorlist 经常是由于网卡未启动。
2023-02-17 00:05:35
75
原创 STL容器与EffectiveC++
《STL源码解析》2.2.2newFoo与newFoo()的区别?区别在于初始化成员与否。使用newFoo()会将成员初始化为对应的初始值。2.2.4两级空间配置器new->底层malloc();delete->底层free()。容器概述vector与array都是线性连续空间,其实vector底层也是通过array来管理数据。4.1注意:vector与array的区别,vector与array是如何扩容的?array是静态空间,定义时就指定了大小,不
2023-02-09 10:44:26
105
原创 STL与Effective c++记录
区别在于初始化成员与否。使用 new Foo()会将成员初始化为对应的初始值。new->底层malloc();delete->底层free()。2.2.2 new Foo与new Foo()的区别?注意:vector与array的区别。2.2.4 两级空间配置器。
2023-02-08 21:11:20
52
原创 string字符串
注意:c++中变量类型分为内置类型与复合类型。内置类型:int,float,char,short等。string,用户定义的struct,class等都属于复合类型。c++中字符串并非内置类型。
2023-02-08 17:16:12
67
原创 左闭右开原则
对数组,容器,二维数组遍历操作时,遵循左闭右开原则可以使代码更有序,尤其是在二分法代码中。典型的问题:给定一个mxn的二维数组,按照如图所示的方式遍历输出。这个问题如果不使用左闭右开的原则书写代码,则常常会使调试代码陷入混乱。因为遍历循环的边界控制原则不一致出现各种bug,因此要使用统一的左闭右开原则控制代码。void traverseMatrix(int **mat, int m, int n){ //二维数组形参传入 **matint startx=0, starty=0, end
2023-02-02 23:12:54
344
原创 链表数据结构
链表的结构,如何定义链表?单链表?多链表?struct TreeNode {int val; //值TreeNode* next;//还可以定义一些TreeNode的构造函数。就形成了一个基本的链表结构。}单链表如何遍历?双向链表如何遍历?对单链表来说,只能从头结点向后遍历,即head=head.next; 双向链表有head和tail两个“哨兵”结点,可以沿两个方向遍历。链表中的结点的增/删/改,甚至反转等操作,要用到pre, cur, nxt三个指针。问题: 给定
2023-01-31 20:38:46
41
原创 数组基础算法
数组在内存中以连续地址存储。例如一维数组 int nums[]={1, 2, 3, 4, 5}; //使用{}初始化数组。二维数组 int nums[][]={{1, 2}, {3, 4}};//二维数组实际上存储的是一个指针数组(*ptr)[], //void* (*ptr)[];数组元素若想要进行增/删,则需要对元素进行移动。同时要维护一个size成员。输入: int nums[]={0, 1, 1, 2, 2, 3, 4, 0, 2},待删除元素为2;输出: nums;方法1
2023-01-31 19:03:55
48
原创 c++基础-函数
1. 函数的形参,实参,返回值,以及如何传参变量:函数中要分辨形参/实参,实参类型应当与形参匹配,或者能够转换成形参类型。局部变量与全局变量的作用范围。函数内的局部变量作用在函数内,函数调用完,返回后即销毁;函数内可以定义静态变量,作用域可以延伸到函数外。函数的声明和定义。函数声明可以定义在头文件(.h)文件中,定义则写到源文件中。2. 函数的参数传递非引用参数:普通传值参数。此时实参拷贝给形参。由于是拷贝,形参与原参数是独立的,对参数的改变不会改变原参数。传指针参数。使用指针
2023-01-31 19:02:55
58
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人