自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Hensenberg的博客

从零开始学习,加qq313194430交流

  • 博客(31)
  • 收藏
  • 关注

原创 解决方法参数传递中的疑惑

首先我们需要知道java中参数传递的,如果是基本类型的值,那么在方法中传的就是复制后的基本类型的值,对形参的修改不会改变实参。public class BlogWrite { public static void main(String[] args) { int n=555; changeValue(n); System.out.println(n); //输出结果是555,说明形参的修改没有改变实参的值,传过去的只是一个副本 }

2021-12-28 15:15:42 344

原创 算法初步--递归思想(java实现)

文章目录简单的递归练习斐波拉契数列,求第n项的数。最大公约数通过递归形式进行插入排序经典递归问题--汉诺塔二分查找的递归解法递归形式的算法分析小白登台阶在有空字符串的数组中查找字符串最长连续递增子序列(部分有序)递归是我们学习算法最开始接触的一种思想,并且这种思想对我们学习其他算法也有很大的帮助,像快速排序,归并排序都用到了递归的思想递归设计经验,找重复的部分,找重复中的变化量,设计出口,不然会一直循环以求n的阶乘为例子,来感受下递归是怎样的要求n的阶乘可以转成求n*(n-1)的阶乘,这样一个子问题

2021-12-02 11:37:29 585

原创 位运算---算法的基础

位运算,我们在学习中是很少碰到的,但是位运算还是有它自己独特的魅力首先我们需要知道一些基本知识对于int型1<<35和1<<3位是一样的,因为int只有32位,会进行取模操作关于异或我们需要知道的异或能交换两个数的值与0异或的结果不变,与1异或结果相反那么就有 a^0=a , a^a=0;public void changeTwoNumber() { int a=2,b=1; a=a^b; b=a^b; //b=a^b^b =b=a^

2021-11-30 19:52:40 537

原创 移除元素---原地移除

27.移除元素题目描述给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。题目思路不需要重新建立一个数组存储处理之后的数据,只需要用一个index值记录有多少个符合题目的值,可以在原数组上进行数据的覆盖,因此只需要遍历一次数组就行。class Solution { public int

2021-07-24 21:03:00 225

原创 java中如何产生固定范围的随机数

随机数的应用还是非常广泛的,在java里面那又如何产生随机数了,不同于c语言那么繁琐,现阶段学会两种产生随机数的方法1.通过Math.random()2.通过创建Random类的对象来实现两种方法都在示例代码里,一看便会package randonMethod;import java.util.Random;public class randomMethod { public static void main(String[] args) { Random rando

2021-07-18 16:00:41 776

原创 c++模板--让偷懒成为常态

文章目录模板一.函数模板1.模板概念2.函数模板3.函数模板注意事项4.函数模板案例——选择排序各种类型的数组5.普通函数与函数模板地区别6.普通函数与函数模板的调用规则7.模板的局限性二.类模板1.类模板的概念2.类模板和函数模板的区别3.类模板对象做函数参数4.类模板与继承模板一.函数模板1.模板概念简单的理解就是像ppt里面的模板一样,提高复用性,减少重复的劳动模板只是一个框架,不能直接使用,需要自己添点东西进去所以说学习模板主要是为了能够学会调用STL里面的模板2.函数模板这个模板的

2021-06-09 22:05:08 112

原创 通过最基础的例子讲解c++多态--没有更简单的了

文章目录多态1.多态的基本概念2.多态的原理分析3.多态案例,计算器设计4.纯虚函数和抽象类5.多态案例设计2,制作各种饮品6.虚析构和纯虚析构7.多态案例设计三:电脑的组装多态1.多态的基本概念函数重载和运算符重载属于静态多态,可以这样理解,一种形式有多种意义。动态多态是派生类和虚函数实现运行时多态#include<string.h>#include<iostream>using namespace std;class animal{public: virt

2021-06-09 16:03:43 130

原创 看起来一点都不简单的非递减序列(665)

题目描述给你一个长度为 n 的整数数组,请你判断在 最多 改变 1 个元素的情况下,该数组能否变成一个非递减数列。我们是这样定义一个非递减数列的: 对于数组中任意的 i(0 <= i <= n - 2),总满足 nums[i] <= nums[i + 1]。示例 1:输入: nums = [4, 2, 3]输出 : true解释 : 你可以通过把第一个4变成1来使得它成为一个非递减数列。题目分析遍历数组,如果是降序就修改,只能修改一次,如果之后再出现了降序就返回false。

2021-05-28 21:51:43 169

原创 由小兔子产生的经典算法--费式数列

题目描述Fibonacci为1200年代的欧洲数学家,在他的着作中曾经提到:「若有一只免子每个月生一只小免 子,一个月后小免子也开始生产。起初只有一只免子,一个月后就有两只免子,二个月后有三 只免子,三个月后有五只免子(小免子投入生产)…。 如果不太理解这个例子的话,举个图就知道了,注意新生的小免子需一个月成长期才会投入生 产,类似的道理也可以用于植物的生长,这就是Fibonacci数列,一般习惯称之为费氏数列,例 如以下: 1、1 、2、3、5、8、13、21、34、55、89…这个数列也叫做斐

2021-05-28 16:04:22 268

原创 用面积法解决 乐团站位 (29)

题目描述首先看这个题目真的是毫无下手之力,直到看到一个比较秒的解法,才让我搞懂这个题目怎么做。题目解法先确定圈数是(num+1)/2,确定要找的数在第几圈,这个的确定是通过比较 行号,列号,num-行号,num-列号,找到他们的最小值,即是在第几圈,这是看离四边哪边最近。最外圈面积-所在圈的面积=外面所有元素的个数。再模9+1就能得到所在圈得左上角得那个数。最后再判断在圈的哪一边,最后就能计算得出要求的值。怎么判断看代码就懂了,判断写代码的时候得是if else if else i

2021-05-28 15:26:24 141

原创 秒求字符串中的单词数(434)

题目描述统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。请注意,你可以假定字符串里不包括任何不可打印的字符。示例 :输入: “Hello, my name is John”输出 : 5解释 : 这里的单词是指连续的不是空格的字符,所以 “Hello,” 算作 1 个单词。解法思路单词的最后一个字符的下一个字符一定是空格,除了最后一个单词,所以我们在遍历字符串时得先判断一下这是不是最后一个字符,这样就解完了,是不是巨简单,还不会的话看看代码就会了。/*统计字符串中的单词个数,这

2021-05-27 23:44:20 95

原创 不会还有人看了我的教程不会汉诺塔问题的解法吧!

重述一遍汉诺塔问题,为了你更好地阅读汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘,并求移动次数解法就是递归,理解三个盘子怎么移动就会这个递归是怎么来的了。移动一个是不是可以直接移动。要移动两个的话,就是先将上面一个移动到中转柱,将最后一个移动到目标柱,最后再将中

2021-05-26 21:31:33 1539 3

原创 c++刷LeetCode

这题让我知道了字符串之间是靠第一个不同字母的asii码值大小来进行排序的。让我灵活用到了子串的获取函数,获取vector容器中的第一个和最后一个元素的函数。vector容器里面也能够存放字符串,这个得清楚。#include<iostream>#include<vector>#include<string>#include<algorithm>using namespace std;/* 写一个函数来查找字符串数组中的最长公共前缀。如果不存

2021-05-01 17:53:55 551

原创 c++继承--这就是c++里面最有魅力的东西

继承的应用——为什么要用继承类与类之间存在着关系,比如说鱼这个类,下级里有草鱼,青鱼等等,然后每种鱼都有它自己的一些特性,定义这些类时,发现下级别的成员除了拥有上一级的共性,还有自己的特性。这时可以用继承的技术来减少重复的代码。#include<iostream>using namespace std;//继承的语法:// class 子类 :public 父类class dog{public: int m_age = 0; int m_height = 15; voi

2021-04-14 10:25:43 223

原创 c++运算符重载

1.加号运算符重载作用:实现两个自定义数据类型相加的运算单纯的让编译器去加,它不知道该如何去加,就比如说类里面有很多属性,我创建的对象是只需要让两个对象中的某些属性进行相加,这就需要用到运算符重载了。#include<iostream>using namespace std;class person{public: person(int a,int b) { this->m_a = a; this->m_b = b; } int m_a; int m

2021-04-13 20:55:26 124

原创 c++友元

友元的理解类内的私人区域只允许自己提供接口去进行访问,为了让特殊的函数以及类外访问私人区域就提供了友元 friend友元的目的就是让一个函数或者类 访问另一个类中私有成员友元的实现1.全局函数做友元只需要在类中加上friend进行声明#include<iostream>using namespace std;class building{ friend void visit(building& building1); //告诉编译器 visit全局函数 是 Bui

2021-04-13 12:59:53 93

原创 c++ const修饰成员函数

const修饰成员函数常函数:成员函数后加const后我们称为这个函数为常函数常函数内不可以修改成员属性成员属性声明时加关键字mutable后,在常函数中依然可以修改常对象:声明对象前加const称该对象为常对象常对象只能调用常函数*#include<iostream>using namespace std;class Person {public: Person() { m_A = 0; m_B = 0; } //this指针的本质是一个指针常量

2021-04-10 14:49:50 153

原创 c++ this指针的学习

this指针的用途:当形参和成员变量同名时,可用this指针来区分在类的非静态成员函数中返回对象本身,可使用return *this#include<iostream>#include<string.h>using namespace std;class Person{public: Person(int age) { //1、当形参和成员变量同名时,可用this指针来区分 this->age = age; } Person&

2021-04-10 14:36:29 70

原创 c++初始化列表

初始化列表这个函数能和构造函数一样起到初始化数据的作用#include<iostream>using namespace std;class person{public: /*person(int a, int b, int c) //传统普通初始化 { m_A = a; m_B = b; m_C = c; }*/ person(int a,int b,int c):m_A (a),m_B(b),m_C(c){} //初始化列表函数 void

2021-04-10 14:01:50 112

原创 c++中的构造函数和析构函数

构造函数和析构函数的产生对象的初始化和清理,就像电子产品的出厂设置一样。需要知道的是构造函数和析构函数会自己自动运行而不需要调用。作用构造函数主要作用在于为对象的成员赋值属性赋值。析构函数作用在于对象销毁前执行一些清理工作。函数语法构造函数类名(){}1.没有返回值,也不写void2.函数名称与类名相同3.可以有参数,可以发生重载4.自动调用,且只会调用一次析构函数~类名 (){}1.没有返回值,也不写void2.函数名称与类名相同,函数名前加~3.不可以有参数4.自动调

2021-04-09 17:25:45 264

原创 c++封装

首先我们要知道c++面向对象有三大特性,封装,继承,多态,这篇文章主要学习封装。其次知道 万事万物都可作为对象,有其属性和行为,举例,车是一个对象,车的属性是轮胎,方向盘…,即这个车子有什么。行为是载人,即这个车有什么用,能做什么。具有相同性质的对象,我们可以抽象称为类。这是最最基础的知识,一定要知道,并清楚。开始学习封装。封装的意义1.设计类的时候,属性和行为写在一起,表现事物2.将属性和行为加以权限控制 //这个现在理解不了,之后再补充#include <iostream&g

2021-04-07 14:13:08 200

原创 c++函数的占位参数以及函数重载

1.函数的占位参数c++函数的形参列表里可以有占位参数,用来占位,调用函数时必须填补该位置#include <iostream>using namespace std;void func(int a, int); //函数形参中只定义一个类型,即占位操作int main(){ func(10, 10); //调用函数时必须填补该位置 return 0;}void func(int a, int){ cout << "this is " <<

2021-04-07 08:58:30 794

原创 c++基础知识new和 引用的学习

**1.new的学习**//new的学习#include<iostream>using namespace std;int main(){ int* p = new int(20); //利用new创建一个整型 ,返回的是地址 int* array = new int[10]; //利用new创建一个数组,返回的是首个元素的地址 cout << *p << endl; delete p; //释放 for (int i = 0; i &

2021-04-06 22:48:52 386

原创 内存四区--搞清楚你写的代码是写在哪个地方的

内存分为四个区域:代码区,全局区,堆区,栈区1.全局区全局区存放的是 全局变量静态变量 ,即static关键字常量,常量又可分为字符串常量,const修饰的全局变量(全局常量)2.栈区由编译器自动分配释放,开辟的数据由编译器自动释放堆区存放的是 局部变量,形参注意,不要返回局部变量的地址,因为栈区的数据在函数执行完后就会自动释放#include<iostream>using namespace std;int* func();int* func(){ int a =

2021-04-05 16:55:21 857

原创 使用未初始化内存的指针

当我们使用未初始化的内存指针时,会导致程序无法进行,因为指针并没有指向一个合法的地址,这时候其内部存的只是一些乱码。所以在调用函数时,会使用乱码所指的内存,指针根本就无权访问,导致出错。看一段代码#include<stdio.h>void getvalue(float x, float y, float* sum); //计算两个浮点数的和int main(){ float a, b; float* sum; scanf_s("%f%f", &a, &b); g

2021-03-13 11:09:12 7311 1

原创 strcpy_s函数的使用

在vs中因为安全性问题舍弃了strcpy()函数的使用,在这里,第一我们先学会在vs中解决strcpy()不能使用的问题,第二如何使用strcpy_s(*a,strlen(b)+1,*b)函数。首先知道函数用法是讲指针b开始指向的内容复制到a指针,中间那个是保证了复制的内容长度。第一:可以在程序开头加入#pragma warning(disable:4996)#include<stdio.h>#include<string.h>#pragma warning(disa

2021-03-13 10:14:13 20270

原创 C语言中常用的数学函数

我们经常要用到数学里面的一些计算,像x的y次方,开根号等等,这些我们可以直接用一个函数来解决,而这些函数都在一个库函数math.h所以在使用的时候一定要加上头文件#include<math.h>abs(x) 求整数x的绝对值fabs(x)求x的绝对值sin cos tan(x)exp(x)求e的x次方pow(x,y)求x的y次方sqrt(x) 求根号x;像这些函数多用一用就会熟悉了。书山有路勤为径嘛。...

2021-03-10 18:52:42 1970

原创 c语言中三目运算符怎么用

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2021-03-10 18:42:34 635

原创 c语言中建立一个字符数组,输出一串字符需要注意的地方

如果用scanf()scanf()是以\t \n space 为结束标志。循环进行时,输入一个字符就会有一个 \n作为结束,那么下一个scanf()就不会有输入,因为结束了。举例#include<stdio.h>int main(){for (i = 0; i < 5; i++) { scanf_s("%c",&a[i],1); printf("%c \n",a[i]); } return 0; }...

2021-02-05 21:02:31 416

原创 c语言中如何产生固定范围的随机数

很多时候我们都需要产生随机数,并且是一定范围内的随机数。需要用到的函数srand(),产生随机数种子如果不用这个函数,那么产生的随机数是固定的,引文一个种子对应着一个固定的随机数排列。rand()随机数函数,在头文件stdlib.h中time()时间函数,在头文件time.h中...

2021-02-02 13:20:21 5065

原创 在C语言中如何计算根号

在C语言中如何计算根号int main(){ double x = 9, y; y = sqrt(x); //计算x开根号}

2021-02-01 15:18:00 64848

空空如也

空空如也

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

TA关注的人

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