- 博客(51)
- 收藏
- 关注
原创 could not save because the file has been modified since the start of editing
could not save because the file has been modified since the start of editing翻译翻译就是。无法保存,因为自编辑开始以来该文件已被修改。
2023-12-28 03:01:24
882
原创 力扣283:移动零(JAVA)
如 1 2 0 5 2 0 经过移动零后变为 1 2 5 2 0 0。[0,slow]为处理好的非0数据,slow永远指向最后一个非0数据。[fast+t,arr.length-1]为待处理的数据。意思是将所有0移到最后的同时其余非0元素位置仍然不变。[slow+1,fast]处理好的为0的数据。slow:非零元素最后的一个位置。思路:使用双指针的思路来写。fast:从左往右遍历数组。
2023-11-24 03:13:54
479
原创 Map(关联数组)和Set(集合)
Map和Set是用来专门查找的数据结构,查找效率非常高我们以前也有用来查找的方法比如:1.直接遍历查找,效率非常慢2.二分查找前提还得让数据有序假如我们将全国人民的身份证信息存储在一个地方然后需要查找某个人的信息就非常麻烦,用直接遍历查找效率非常慢,用二分查找还得把12亿的数据排序一遍,并且它们还非常不适合删除操作这时候我们就可以用Map或Set两数据结构。
2023-11-08 22:53:07
256
原创 JAVA二叉搜索树(专门用来查找)
4.记得放一个父亲节点curFather跟在cur节点后面,当cur循环结束后说明cur节点此时为null,而curFather父亲节点刚好就在最后的叶子位置。root根节点的左树指向要删除节点的左树: root.left = deleteCur.left。初始化:一个二叉搜索树底层仍然是一颗二叉树,每个树有3个域,分别是值域val,左树地址域,右树地址域,一棵二叉搜索树有一个根节点。2.判断是否为空,为空的话说明此时插入的节点为二叉搜索树的第一个节点,将新的节点赋值为根节点。
2023-11-07 00:14:42
269
原创 JAVA排序
答:为了让希尔排序是彻彻底底有序的,这样虽然看起来和插入排序一样,但因为经过前面的代码数据已经趋于有序,所以最后加个插入排序其实时间复杂度也不高。将数组里的最小值按从小到大顺序排好,放在箭头所指位置就不变化了,也就是说只能将数据放在相同的位置不动。基准点,基准点的左边得数据都比基准点小,基准点的右边数据都比基准点大。arr[i]在arr[j]前面,arr[j]在arr[i]后面。arr[i]在前面,arr[j]在arr[i]后面。,这样堆顶元素(最大的)就放到最后,然后在将。
2023-10-24 17:52:54
735
5
原创 数据结构:堆的简单介绍
堆的介绍:(PriorityQueue)堆又称优先级队列,何为优先级队列?就是优先将数据元素里最大值或最小值放在最前面,将最大值放在最前面称为 大根堆, 将最小值放在最前面称为 小根堆例如:我们在用手机打游戏时一通电话过来在以前手机会优先处理打电话 大根堆:根节点比左右孩子节点大 小根堆:根节点比左右孩子节点小
2023-09-25 17:56:16
336
原创 网络编程1
UdpEchoServer构造方法中的(int port)就是输入服务器的端口号,端口号是网络上的身份标识符,相当于我们的身份证,网络通信中可以通过端口号来确认将数据传给那个进程。我们的网络编程其实就是用代码实现多个 进程 之间的通信,由于进程之间有隔离性,我们网络编程就是通过进程的公共区域(网卡)来实现多个进程的相互通信。辽宁沈阳->天津->河南->江西->深圳南山区。可靠传输:数据接收方 有无收到数据 发送方有感知,生活中打电话就是可靠传输,对方有没有接收到我们的数据我们是知道的。...
2022-08-17 11:03:57
96
原创 神奇String字符串类
🚗一:双等于==比较的是字符串的地址🚓二: equals 比较的是字符串的内容,返回值是 布尔类型🚕三: str1.compareTo(str2) 比较大小,返回的是int类型str1 > str2 返回值 大于 0 str1 =...
2022-04-24 22:47:47
167
原创 JAVA中神奇的Arrays
一:🚗将数组里的元素转为字符串Arrays.toStriing(数组变量名)二:🚓 将数组进行拷贝1.😀 int[] arr = Arrays.copyOf(要拷贝的的数组名,拷贝的长度)用想要拷贝的目的地接收 2.😁 ...
2022-03-25 00:11:46
806
原创 JAVA中数组
数组的概念数组是用来存放 相同类型的集合,内存是连续的数组的创建:除了第三种创建数组的方法 int[ ] = array3 = new int[4]; 其余都不能在数组括号里不能加数字,JAVA会自己识别出数组有多少个元素,且int[ ] = array3 = new int[4]在不赋值的情况自己会默认为0,而C语言默认为随机值。JAVA中数组长度(元素多少)的获取简单粗暴的 数组变量名.length就行了,不像C语言还要 sizeof(arr)/sizeof(arr[
2022-03-22 09:30:00
889
原创 JAVA中方法的重载
方法的重载:1.方法名 相同2.返回值 不作要求,你随意3.参数列表 不同(参数类型或参数个数)4.要在同一个类中当我们的一个方法已经在很多地方被调用,可新的方法需要旧方法同一种功能,比如计数器的相加有整数的加法,小数的加法,他们整体的功能都是加,只是类型不同(一个是int,一个是double),这就需要重载...
2022-03-20 16:32:34
176
原创 for循环的执行顺序
第一遍1.先进 表达式1 进行初始化,只进一次2.然后进入 表达式2 判断是否为真,如果为真就进入 循环体,如果为假就退出for循环3.进入循环体4.最后到 表达式3第二遍1.判断 表达式2 是否为真,真就继续进入循环体,假就退出for循环2.进入 循环体3.表达式3......在for循环 表达式 可以为空让我们来看看这题永远小于130输出的是正数到负数一直循环,因为它byte类型只占1个字节(8个比特)最大只能到127,所以它永远小于13..
2022-03-12 17:06:24
745
原创 JAVA中的 布尔类型 long float double 不能用作于swithc()里
记住一点就行了:布尔类型 long float double 不能用作于swithc()里
2022-03-12 16:49:45
757
原创 JAVA中类scanf的使用方法
在JAVA中也有个Scaner与C语言中scanf效果类似1.首先先在JAVA代码的第一行写入 import java.util.Scanner;这行代码类似c语言的#include包含头文件。2.创建Scanner对象例如: Scanner n = new Scanner(System.in); 这里的System.in指的是从键盘读取数据的意思,n是一个变量3.存储从键盘读取的数据如果要存储的数据是int类型的话就 int a = n.next(); a是变量存...
2022-03-12 16:35:16
9734
2
原创 JAVA中的运算符
在算术运算符中(+ - / %)在C语言中,取余%符号的两个操作数只能用作于整数,不能用作于小数(浮点数)而在JAVA中,取余%符号的两个操作符不单可以用作于整数,也可用于整数在关系运算符中(== != < > <= >=)在C语音当中 关系运算符返回值是0或者1而在JAVA中 关系运算符返回的是 boolean 类型,也就是ture或者是flase在JAVA中非(!)只能用作于boolean类型的数据上短路求值..
2022-03-09 19:43:04
914
1
原创 JAVA的数据类型与变量
我们先了解一下冯诺依曼体系例如我们的手机中的 8G+256G 6G+32G 中的前半部分8G和6G指的就是内存,内存是用来运行程序的,内存越大,手机跑的也就越快,要是内存占满了,手机也就变得卡卡的了,后半部分指的是外存储器,是将程序存储在硬盘当中的内存大小的单位换算除了字节换算比特是8以外,其余全部为1024JAVA的整形变量对于整形int来说,不管它在哪个系统,它都占4个字节,要不然就做到跨平台性它的取值范围是 -2^31到2^31-1 ,java的整形没有..
2022-03-06 20:30:48
341
原创 JAVA的第一段代码
注意事项:1.一个java文件当中只能有一个piblic类,且 类名需要和文件名是相同的2.类名 要采用大驼峰的形式命名 如: HelloWorld HelloJava3.注意 二进制(字节码)文件—class文件,一个类对应一个二进制文件为什么会这样设置呢?为了方便使用,如果需要HelloWorld这个类,就加载对应的字节码文件public class HelloWorld{ public static void main(String[] args){ System...
2022-03-05 15:59:01
811
原创 变成最近的斐波那契数列最少需要多少步
* 这题找斐波那契数的方法是叠加法* 0 1 1 2 3 5 8 13 21 34* a b c* a b c* a b c* 这里可以看到一开始a=0,b=1,c=a+b* 然后a=b,b=c,c=a+b; a,b,c都往前一步了,找到下一个斐波那契数* 以此循环* * 思路 15* 例如:斐波那契数列 0 1 ...
2022-03-02 20:07:47
213
原创 空白字符插入We Are Happy变为We%20Are%20Happy
* 思路: 首先遍历一遍字符串We Are Happy,寻找有几个空白字符记录下来,(在寻找空白字符时本人一开始脑抽想用二分法寻找,但二分法是不能用作寻找字符的,) 遍历完毕找到全部的空白字符后 将空白字符的个数乘2求出扩容后的字符长度(将%20塞进去) 乘2是因为一个空白字符替换为%20相当于多了两个字符 然后将非空白的原始字符串We Are Happy从末尾往后挪到扩容后末尾的位置,然后end和 new_end一起减减,寻找下一个字符 变...
2022-03-02 20:03:34
173
原创 Leetcode_485最大连续1的个数
Leetcode_485给定一个二进制数组 nums , 计算其中最大连续 1 的个数。输入:nums = [1,1,0,1,1,1]输出:3解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.思考:统计连续1的个数,遇到0时表示连续中断,判断如果当前的统计数大于之前最大的则替换,然后继续下一个位置开始的统计即可。//思考://统计连续1的个数,遇到0时表示连续中断,判断如果当前的统计数大于之前最大的则替换,然//后继续下一个位置开始的统计即可。...
2022-02-26 19:01:46
8128
原创 if与else if,else的小细节
上面这张图片即使进入了上面的if语句下面的if语句还是可以进入上面都进去过if了下面的else if或else就不会再进入了
2022-02-26 18:52:51
248
原创 牛客网HJ56 完全数计算
方法一:思路要求输出不超过n的完全数个数(第40行代码)把所有可以被n整除的数加起来判断是否与n相同#include<stdio.h>int find(int n){ int i = 0; int sum = 0; for (i = 1; i < n; i++) //除它本身 { if (n % i == 0) //证明是一个约数 { sum += i; //把约数相加起来 } } if (sum == n) .
2022-02-26 18:42:24
443
原创 统计不同字符个数(类似去重复)
HJ10 字符个数统计编写一个函数,计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 ,包括 0 和 127 ),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次例如,对于字符串 abaca 而言,有 a、b、c 三种不同的字符,因此输出 3 。 a,a,a输出1方法一:不细讲#include<stdio.h>#include<string.h>int redo(char* arr){ int n...
2022-02-06 00:40:19
1831
2
原创 字符串旋转(左转)
题目名称:字符串左旋题目内容:实现一个函数,可以左旋字符串中的k个字符。例如:ABCD左旋一个字符得到BCDAABCD左旋两个字符得到CDAB方法一:先将前k个字符一个一个保存在tmp变量上,然后arr数组整体向左挪动,然后将tmp存着的字符放到数组最后一个位置。要挪动几个字符就把上面的循环几次/*思考:先将前k个字符一个一个保存在tmp变量上,然后arr数组整体向左挪动,然后将tmp存着的字符放到数组最后一个位置,要挪动几个字符就把上面的循环几次*/#incl.
2022-02-06 00:29:48
203
原创 力扣724.寻找数组的中心下标
题目描述:输入:nums = [1, 7, 3, 6, 5, 6]输出:中心下标3解释:中心下标是 3 。左侧数之和 sum = nums[0] + nums[1] + nums[2] = 1 + 7 + 3 = 11 ,右侧数之和 sum = nums[4] + nums[5] = 5 + 6 = 11 ,二者相等,否则输出-1思考:假设从头到尾扫描数组中的每个数字。当扫描到第i个数字时,它左边的子数组的数字之和就是从第1个数字开始累到到第i-1个数字的和此时它右边的子数组的数.
2022-02-03 01:27:17
721
原创 数组指针(指向数组的指针)
&数组名与数组名&数组名表示的是取出整个数组的地址,而不是首元素地址,所以它+1步长跳过整个数组数组名在sizeof单独使用时或者被&数组名时表示的是整个数组,其余都指首元素地址数组指针的使用:数组指针顾名思义是指向数组的指针,数组指针存放的是数组的地址这里的int(*p)[10] 括号*p的意思是让p先和*号配对确保是个指针,然后去掉*p可以知道指针p变量指向的是一个数组,有10个元素,每个元素是int类型 一般用法是这样的:二维...
2022-01-22 02:58:30
4455
原创 指针数组.
整形数组---int arr[5]={0};---存放整形的数组字符数组---char arr[5]={0};---存放字符的数组整形指针数组---int* arr[5]---存放整形指针(地址)的数组小小的模仿一下二维数组:
2022-01-22 01:08:45
270
原创 strcpy的使用
strcpy()函数是用于字符串进行复制strcpy(arr2,arr1)arr2是目的地址,arr1是字符串源地址,这里的意思是说把arr1的字符串复制给arr2
2021-12-12 16:03:29
344
原创 gets的使用与sizeof使用的区别
图1可以看出sizeof是遇到'空格'它就会停止输入图2可以看出gets与sizeof的区别是gets可以输入空格,记住gets(括号里面字符数组名或字符指针变量名)
2021-12-12 15:51:41
865
原创 从C语言考试中发现的问题
强制类转换与操作符优先这题主要考察的是强制类转换与操作符优先问题y=x+3/2为何等于3.000000是因为除法的优先级比加法高,所以这里先算3/2,整数与整数相除得到的还是整数(除非把它变为3.0/2或者3/2.0)所以3/2=1,x+1就等于3,x和y又是double类型所以y=3.000000指针与操作符优先级问题此题考察的是指针与操作符优先级问题在*p++中,先算的是++而不是解引用*,原因是++的优先级比*高,并且++加的是p的地址而不是p指向的1...
2021-11-29 16:10:34
416
原创 牛客网—倒置字符串 I like beijing. 变为beijing. like I
思想:1.先将空格前的字符串逆置把 i like beijing. 变为 i ekil .gnijieb2.然后在逆置整个字符串的内容 把 i ekil .gnijieb变为beijing. like i//倒置字符串】将一句话的单词进行倒置,标点不倒置。//比如 I like beijing. 经过函数后变为:beijing. like I//思想://先把每个空格前的字符都逆置了先 将I like beijing.变为I ekil .gnijieb//再把整个数组的内容都逆
2021-11-29 14:12:26
1103
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人