自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 C++面向对象的三大特性

C++ 三大特性是:封装,继承,多态一、概念和优点封装(encapsulation):封装就是将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过 外部接口,一特定的访问权限来使用类的成员。通过封装使一部分成员充当类与外部的接口,而将其他的成员隐蔽起来,这样就达到了对成员访问权限的合理控制,使不同类之间的相互影响减少到最低限度,进而增强

2021-04-27 10:18:05 5350 3

原创 C++迭代器

一、定义和初始化要访问顺序容器和关联容器中的元素,需要通过“迭代器(iterator)”进行。迭代器是一个变量,相当于容器和操纵容器的算法之间的中介。迭代器可以指向容器中的某个元素,通过迭代器就可以读写它指向的元素。从这一点上看,迭代器和指针类似。迭代器实际是一种泛型编程。泛型编程旨在使用同样的函数去处理数组、链表或其他容器。迭代器按照定义方式分成以下四种。正向迭代器,定义方法如下:容器类名::iterator 迭代器名;常量正向迭代器,定义方法如下:容器类名::const_i

2021-04-26 20:55:09 838

原创 C++ 容器

C++的标准模板库(STL)提供了容器、迭代器、函数对象、算法的模板。其中容器的定义为:在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器。容器的性质:1.容器是同质的,即存储的值的类型相同。2.另一个特点是容器可以自行扩展。容器的优势就在这里,它不需要你预先告诉它你要存储多少对象,只要你创建一个容器对象,并合理的调用它所提供的方法,所有的处理细节将由容器来自身完成。它可以为你申请内存或释放内存,并且用最优的算法来执行您的命令。1.容器的分类STL 对定义

2021-04-16 20:31:22 1013

原创 剑指offer——图

(一)剑指Offer12. 矩阵中的路径基本思路:图中最常见的就是DFS和BFS算法的应用,即搜索方法。这一题如果把顶点看做根节点,那么实际就是一个DFS搜索的题。由于在搜索过程中可能走向重复的点,所以需要维护一个数组,用于存储每个结点是否访问过。class Solution { boolean flag = false;//标识路径是否存在 void helpFunc(char[][] board, int target, char[] words,int x, int y){

2021-03-03 15:04:26 195

原创 剑指offer——栈与队列

在这一部分,30题属于单调栈,59题属于单调队列,二者可以对比分析。(一)剑指offer 30.包含min函数的栈基本思路 :1.首先,由于要求所有操作都是O(1),尤其是min操作,故想到用一个辅助栈来保存当前的最小值。2.由栈的属性决定,每次只能从一端取值,故最小值栈中只要每次都放入当前的最小值即可。也就是说,当一个元素入栈时,比较这个值与最小值栈中栈顶的元素,如果比栈顶元素小,则将这个值放入到最小值栈;否则,将最小值栈的栈顶再次入栈。class MinStack { Stack&l

2021-03-03 15:04:13 125

原创 剑指offer——查找算法

(一)剑指Offer53-I. 在排序数组中查找数字I基本思想:1.在排序数组中查找数字,想到了二分搜索方法。由于需要找到所有的该数字,我们想到二分搜索的变形中,有一个查找最左侧的该数字和最右侧的该数字,我们只要找到边界位置,然后向另一方向找就行了。class Solution { public int search(int[] nums, int target) { if(nums.length ==0){ return 0;

2021-03-03 15:04:00 93

原创 剑指offer——树

树的题主要就是依赖于递归来实现,一定要学好递归!!!(一)剑指Offer 07.重建二叉树基本思路:1.这道题就是简单地根据前序遍历和后续遍历来创建二叉树,方法如下:前序遍历的第一个元素是根节点,根据根节点在中序遍历中的位置,左侧为左子树,右侧为右子树,然后再递归构建左右子树即可。class Solution { public TreeNode buildTree(int[] preorder, int[] inorder) { //把前序遍历的值和中序遍历的值放到list中

2021-03-03 15:03:35 206

原创 剑指offer——HashMap

(一)剑指Offer48. 最长不含重复字符的子字符串基本思路:1.这道题没有什么巧妙的算法,维护一个窗口,保存窗口的最左端位置,并将窗口内的字符以<键:字符,值:位置>存入HashMap中。当有重复字符出现时,就更新HashMap中该键对应的坐标,并将长度与最大长度进行对比更新。class Solution { public int lengthOfLongestSubstring(String s) { //设置一个hashmap,存储每个字符出现的最新位置

2021-03-03 15:03:24 139

原创 剑指offer——数学

(一)剑指 Offer 14- I. 剪绳子基本思路:1.如果我们不考虑数学问题,我们可以采用动态规划的方法来解决这个问题。有点类似于青蛙跳台阶的题。2.但是这道题还有数学解法:(1)最优: 3 。把绳子尽可能切为多个长度为 3 的片段,留下的最后一段绳子的长度可能为 0,1,2三种情况。(2)次优: 2 。若最后一段绳子长度为 22 ;则保留,不再拆为 1+1。(3)最差: 1 。若最后一段绳子长度为 1 ;则应把一份 3 + 1替换为 2 + 2推导见官方解答动态规划代码:class

2021-03-03 15:03:06 133

原创 剑指offer——递归

(一)剑指Offer10-I.斐波那契数列class Solution { public int fib(int n) { int[] save = new int[101]; save[0]=0; save[1]=1; save[2]=1; for (int i = 3; i <= n; i++) { save[i] = (save[i-1]+save[i-2])%1000000007

2021-03-03 15:02:20 141

原创 剑指offer——排序算法

(一)剑指Offer 40. 最小的k个数基本思路:1.这是经典的topK问题,最直接的想法就是对其进行排序,然后取出排序后的前k个数。那么问题就转化为了如何选择排序算法上。2.由于这里只需要找到前k个数,我们在选择排序算法时,希望能够有一个排序算法,通过有限的轮数找到排序好的前k个数,这样后面的排序过程我们就不需要再进行了。3.一个较好的方法是使用快排,快排的时间复杂度为O(nlogn)。我们首先选择一个数,进行一轮排序,此时小于此数的均在左侧,大于的均在右侧;若左侧的个数少于k个,则我们对右侧

2021-03-03 15:02:04 301

原创 剑指offer——位运算

(一)剑指Offer39. 数组中出现次数超过一半的数字基本思路:1.这道题最先想到也是最简单的思路就是用HashMap进行统计,或是将数组进行排序,中位数一定是超过一半的那个数字。2.另一个方法是采用摩尔投票的方法,(二)剑指Offer15. 二进制中1的个数基本思路:提取最低位,判断是否为1,并不断进行位右移。public class Solution { // you need to treat n as an unsigned value public int ha

2021-03-03 15:01:44 220

原创 剑指offer——动态规划

(一)剑指 Offer 47. 礼物的最大价值基本思路:对于每一个格子,到达它的最大总价值等于左侧、上侧格子中较大的总价值加上自身的价值,故使用动态规划来解决。class Solution { public int maxValue(int[][] grid) { //动态规划,从最后向前算 int[][] route = new int[grid.length][grid[0].length]; //从右往左,从下往上 rou

2021-03-03 15:01:22 176

原创 Java实现常用排序算法

常用的排序算法包括:(1)插入排序√(2)折半排序√(3)希尔排序√(4)选择排序√(5)堆排序(6)快速排序√(7)归并排序√(8)基数排序(9)冒泡排序√一、插入排序基本思路:从前往后,每个数组插入到应该在的位置。如:第2个数字与第一个数字比较,根据二者大小判断是否应该转换位置;第3个数字在排序时由于前两个数字已经排好顺序,只要根据与前两个数字的大小关系判断,找到适合的位置插入进去,并将其他数字依次后移即可。以此类推。代码:static void sort(int[] nums

2020-12-26 16:24:57 103

原创 Java 容器

一、什么是容器&&为什么使用容器我们在实际使用时,会使用到成千上万的数据。这些数据存储在内存中不是杂乱无章的,而是通过各种数据结构组织而成的。容器实际上就是存储数据的一块内存区域,使用容器实际上就是通过java标准库中定义的结构、方法来实现数据的存储以及操作。java就提供了很多容器,多个容器的数据结构不同。但是,结构不重要,重要的是能够存储东西,能够判断,获取把容器共性的内容不断往上提取,最终形成容器的继承体系---->Collection。容器有哪些呢。容器分为三类Set、Li

2020-12-21 21:54:36 509

原创 树的常见知识点及代码整理

一、什么是树树是n(n>=0)个结点的有限集合,它:(1)或者是一棵空树(n=0),空树不包括任何结点;(2)或者是一棵非空树(n>0),此时有且仅有一个特定的根结点;当n>1时,其余结点可分为m个互不相交的有限集T1,…,Tm,其中每一个本身又是一棵树,称为根的子树。注意:有且仅有一个根结点!(一)基本概念1.结点的层次:从根开始定义,根节点的层次为0,其子树的根节点层次为1,依次递加。2.树的深度:树中结点的最大层次树为树的深度。3.结点的度:结点拥有的子树的数目(即子

2020-12-15 20:56:55 340

原创 n个骰子的点数

一、题目把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那个的概率。示例 1:输入: 1 输出: [0.16667,0.16667,0.16667,0.16667,0.16667,0.16667] 示例 2:输入: 2 输出:[0.02778,0.05556,0.08333,0.11111,0.13889,0.16667,0.13889,0.1111

2020-12-15 18:34:21 163

原创 1~n 整数中 1 出现的次数

一、原题题目:输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。示例 1:输入:n = 12输出:5示例 2:输入:n = 13输出:6二、思路将每一位中出现的1相加Case1:个位出现1的次数个位出现1的次数主要取决于比它高的位,如987,这个位出现的次数应该为98次,因为每0~9一轮会初选一次1。但是这又要考虑个位是否为0,如果个位为0,如980,则只出现97次。

2020-12-14 20:42:49 451

原创 不用加减乘除做加法

一、题目写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。示例:输入: a = 1, b = 1 输出: 2提示:a, b 均可能是负数或 0结果不会溢出 32 位整数二、思路既然不能用加减乘除,则只能通过位运算了位运算中,异或是最接近相加操作的,但是无法表示出进位的情况通过举例我们可以发现0 1 0 01 1 1 1--------异或1 0 1 10 1 0 01 1 1 1---------与0 1 0 0与操作

2020-12-14 20:08:39 109

原创 Java 二分查找 插值查找 斐波那契查找

常用的查询算法:顺序查找二分查找插值查找斐波那契查找树表查找分块查找哈希查找索引查询深度搜索&&广度搜索一、二分查找int binarySearch(int[] nums, int target) { int left = 0; int right = nums.length - 1; // 注意 while(left <= right) { // 注意 int mid = left+(right - left) /

2020-10-29 20:29:29 143

原创 Java 类与接口

一、类Java是一门面向对象的编程语言,除了基本数据类型以外,Java要求每一个数据类型必须都是一个类。类是对某一类事物的描述,是抽象的、概念上的定义;对象是实际存在的该类事物的个体,因而也称实例(Instance)。类和对象就如同概念和实物之间的关系一样,类就好比是一个模板,而对象就是该模板下的一个实例。(一)类的基本用法这部分应该大家都会有所涉猎,大家可以选择性看一下1.类的定义class 类名称 {//声明成员变量//声明成员方法}2.对象声明类定义完成之后,肯定无法直接使用。

2020-10-28 18:48:03 242

原创 Java 如何理解泛型

一、什么是泛型泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。也就是说在泛型使用过程中,操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别被称为泛

2020-10-28 14:51:10 148 1

原创 理解String的特性以及与StringBuilder StringBuffer的区别

一、String类型String类型在Java中是十分常用的类型,指向一个字符串,如:“ABC”、“123”等。String类是定义于java.lang.string包中的,该包提供了切割、复制、查找等函数。String是一个用 final 声明的常量类,不能被任何类所继承,且无法被修改。(一)String不变性关于String类,一个重要的特性是其不可变性,即一个字符串一旦被创建,就不会再被修改。但是显然我们在写代码时,以下句子是可以被通过的:String s = "abcd";s = "123

2020-10-26 12:37:06 229 1

原创 全波形反演

Chapter 1 Introduction全波形反演(FWT)的目的是估计地下弹性材料的参数。这可以通过使用梯度优化方法最小化建模数据和现场数据之间的不匹配能量来实现。由于FWT利用每个地震记录的全部信息内容,可以解决地震波以下的结构问题。与 travel time tomography相比,这在分辨率上有了巨大的提高。全波形反演指利用非线性寻优方法反演给定时窗内的波形记录以获取影响...

2020-05-10 15:07:30 16033 7

原创 OP-TEE的安装

OP-TEE安装OPTEE 是一个开源工程,完整的实现了一个可信执行环境。该项目最初由意法-爱立信所发起,是一个专门的解决方案,然后由ST半导体拥有和维护,2014年Linaro开始与意法半导体合作推出将这个专有的TEE解决方案转换成一个开源的TEE解决方案。关于OPTEE就不赘述了,毕竟能找到这里的都是需要安装OP-TEE了~本文旨在为大家的提供帮助,如果失效还是参考官网安装教程。准备工...

2020-03-03 09:06:46 1865 3

原创 菜鸡刷CTF(四)

高手进阶(3)题目11:sleeping-guard难度系数:题目来源: csaw-ctf-2016-quals题目描述:只有真正的hacker才能看到这张图片题目场景: 点击获取在线场景题目附件: 暂无...

2019-08-02 18:55:13 10032

原创 高手进阶区(3)

高手进阶区(2)题目5:说我作弊需要证据题目来源: ISCC-2017题目描述:X老师怀疑一些调皮的学生在一次自动化计算机测试中作弊,他使用抓包工具捕获到了Alice和Bob的通信流量。狡猾的Alice和Bob同学好像使用某些加密方式隐藏通信内容,使得X老师无法破解它,也许你有办法帮助X老师。X老师知道Alice的RSA密钥为(n, e) = (0x53a121a11e36d7a84dde3...

2019-07-23 09:28:09 2253

原创 小菜鸡刷CTF(二)

高手进阶区(1)接下来就是攻防世界的高手进阶区了,这里的题目讲道理对于我这样的新手还是挺难的,尽力而为吧~(tcl)题目1:你猜猜题目来源: ISCC-2017题目描述:我们刚刚拦截了,敌军的文件传输获取一份机密文件,请君速速破解。题目附件:504B03040A0001080000626D0A49F4B5091F1E0000001200000008000000666C61672E747...

2019-07-19 14:46:58 1369

原创 小菜鸡刷CTF

一个小菜鸡的CTF成长史本人小菜鸡一枚,刚入门CTF,不对,应该是脚刚刚沾上了CTF的边边,就只是在刷攻防世界中的题目。无奈脑子太笨,记性太差,只好将题目整理下来,代码多有借鉴,求勿喷~~新手练习题目一:base64题目来源: poxlove3题目描述:元宵节灯谜是一种古老的传统民间观灯猜谜的习俗。 因为谜语能启迪智慧又饶有兴趣,灯谜增添节日气氛,是一项很有趣的活动。 你也很喜欢这个游戏...

2019-07-19 09:33:44 2150

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除