- 博客(22)
- 收藏
- 关注
原创 代码随想录算法训练营第四天
总体来说,这个算法通过计算链表长度和移动指针的方式,找到两个链表的交点。通过比较指针指向的节点来确定是否存在交点,并返回交点所在的节点。总体来说,这个算法使用快慢指针的思想,在一次遍历中找到待删除节点的前一个节点,并进行删除操作。总体来说,这个算法通过改变节点之间的指针连接顺序,将链表中相邻的两个节点进行交换。辅助操作,可以简化对头节点的处理,最终返回交换后的链表头部。辅助操作,可以简化对头节点的处理。个节点后的链表头部。
2023-07-15 21:54:38 2837
原创 代码随想录算法训练营第三天
双指针法:当cur指针不为NULL时,用temp记录下当前指针的下一位,此时我们有了三个指针。先把当前指针cur指向pre,再把这两个指针向后移动一位,继续以上操作,直到cur == NULL,即cur指针到达链表最后一位的后一位,此时pre指针在最后一位,返回pre。Leetcode中给出的链表头结点并不是书上写的不存元素的虚拟头结点,而是书上所说的首元结点。思路:反转链表同样用虚拟头结点的方法,但是并不是真正创建了一个结点,而是一个空指针pre,分为递归和双指针两种方法。思路挺简单的,不说了。
2023-07-15 21:29:08 2614 1
原创 代码随想录算法训练营第二天
思路::先平方再排序,最后返回。我靠,刚刚发现c语言居然还有快排的库函数,之前是自己从网上抄了个冒泡排序。在<stdlib.h>中。
2023-07-14 22:08:15 2692 1
原创 代码随想录算法训练营第一天
快指针和慢指针同时从数组下标为0的元素开始, 在原数组上进行操作,使其成为一个没有目标元素的新数组。快指针是用来寻找新数组里面所需要的元素,获取到需要元素后需要把该元素赋值给新数组,慢指针就是用来更新数组的。快指针不断后移,当遇到和目标元素不同的元素时,就把该元素赋值给慢指针,更新后慢指针也后移。当移除一个元素后,第一次的for循环的i需要减1,以便下一次循环可以再次检查当前位置。数组元素的移除其实是后一个元素对前一个元素的覆盖,并不是真正内存地址删除。LeetCode:27. 移除元素。
2023-07-12 22:01:27 3037 1
原创 关于equals和==的比较问题
一般认为 == 是基本数据类型使用的比较对象地址引用,equals()是比较基本数据类型的包装类的内容是否相等,所以当不是基本数据类型的包装类时,我们需要在自定义类中重写equals()方法。equals()方法默认是比较引用的,基本数据类型的equals()方法已经重写了,所以才能比较内容。理论上浮点数的比较应该是比较严格的——两个数值之间即使只有小数部分有极小的不同,它们仍然不应该相等。但是当一个非常大的数值减去一个相对较小的数值时,非常大的数值并不会发生显著变化。
2022-12-18 12:45:21 96
原创 c语言学习笔记2
按位与实际上也是让两个数的每一位都进行比较,如果两个数对应bit位上其中一个是1,那么结果的对应bit位上就是1,其他情况为0。如果两个数对应的bit位都是1,那么结果的对应bit位上就是1,其他情况一律为0。
2022-12-17 20:09:42 65
原创 c语言学习笔记1
以十进制和指数中较短的形式输出 float、double 类型的小数,并且小数部分的最后不会添加多余的 0。我们知道,所有的数据底层都是采用二进制来进行保存的,而第一位则是用于保存符号位,但是如果我们不考虑这个符号位,那么所有的数都是按照正数来表示。负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)我们没有为其设定初始值,那么它的值就是不确定的了(千万注意并不是不设定值默认就是0)1111代表-0,0000代表+0,在我们实数的范围内,0有正负之分吗?
2022-12-17 14:12:47 63
原创 表格和表单
1.表格 - 在网页中可以通过表格来表示一些格式化的数据 - 表格相关的标签 - 用来创建一个表格 - 表示表格中的一行 - 表示表头中的单元格 - 表示表格中的单元格 - 属性: colspan 横向的合并单元格 rowspan 纵向的合并单元格 - 例子: ...
2022-06-07 08:22:24 64
原创 文档流,浮动,定位的区别和处理
1.文档流 - 所有的元素默认情况下都是在文档流中存在的 - 文档流是网页的最底层 - 元素在文档流中的特点: - 块元素 1.默认宽度是父元素的全部 2.默认高度被内容(子元素)撑开 3.在页面中自上而下垂直排列 - 内联元素 1.默认高度和宽度都被内容撑开 2.在页面中自左向右水平排列,如果一行不足以容下所有的元素
2022-06-07 08:21:12 218
原创 处理流之一:缓冲流的使用
/** * 处理流之一:缓冲流的使用 * * 1.缓存流: * BufferedInputStream * BufferedOutStream * BufferedReader * BufferWriter * * 2.作用:提供流的读取、写入的速度 * 提高读写速度的原因:内部提供了一个缓冲区 * * 3.处理流,就是“套接”在已有的流的基础上。 * */public class BufferedTest { /* 实现非文本文件的复制 *.
2022-02-25 13:33:36 107
转载 RandomAccessFile的使用
1.RandomAccessFile直接继承于java.lang.Object,实现了DateInput和DateOutPut接口2.RandomAccessFile既可以作为一个输入流,又可以作为一个输出流3.如果RandomAccessFile作为输出流时,写出到的文件如果不存在,则在执行过程中自动创建 如果写出的文件存在,则会对原有文件内容进行覆盖。(默认情况下,从头覆盖)4.可以通过相关操作,实现RandomAccessFile“插入”数据到效果public class Random.
2022-02-25 13:31:36 227
原创 IO流之字符流(文本文件的读取和写入)
public class FileReaderWriterTest { public static void main(String[] args) { File file = new File("hello.txt");//相较于当前工程 System.out.println(file.getAbsoluteFile()); } /* 将hello.txt文件内容读入程序中,并输出到控制台 说明点: 1.read()的.
2022-02-25 13:28:53 869
原创 Map源码分析及常用方法
/** * Map:双列数据,存储key-value对的数据 类似高中的函数:y=f(x) * HashMap:作为Map的主要是实现类;线程不安全的,效率高;存储null的key和value * LinkedHashMap:保证在遍历map元素时,可以按照添加的顺序实现遍历 * 原因:在原有的HashMap底层结构基础上,添加了一对指针,指向前一个和后一个元素。 * 对于平凡的遍历操作,此.
2022-02-25 13:24:20 143
原创 Set接口框架底层源码分析(不包括TreeSet)
/** * 1.Set接口的框架: * Collection接口:单列集合,用来存储一个一个的对象 * Set接口:存储无序的、不可重复的数据 高中讲的“集合” * HashSet:作为Set接口的主要实现类;线程不安全的;可以存储null值 * LinkedHashSet:作为HashSet的子类;遍历其内部数据时,可以按照添加的顺序遍历 * 对于频繁的遍历操作,LinkedHashSet效率高于H.
2022-02-25 13:21:26 73
原创 List接口源码分析
/** * Collection接口:单列集合,用来存储一个一个的对象 * List接口:存储有序的、可重复的数据。 “动态”数组 * ArrayList:作为List接口的主要是实现类;线程不安全的,效率高;底层使用Object[] elementDate存储 * LinkedList:对于频繁地插入、删除操作,使用此类效率比ArrayList高;底层使用双向链表存储 * .
2022-02-25 13:18:13 80
原创 Collection框架概述
/** * 一、集合框架的概述 * 1.集合、数组都是对多个数据进行存储操作的结构,简称Java容器。 * 说明:此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储(.txt,.jpg,.avi,数据库中) * * 2.数组在存储多个数据方面的特点: * >一旦初始化后,其长度就确定了。 * >数组一旦定义好,其元素的类型也就确定了。我们也就只能操作指定类型的数据了。 * 比如String[] arr;int[] arr1;Object[] arr2; *.
2022-02-25 13:15:46 207
原创 String类与其他结构之间的转换
import org.junit.Test;import java.io.UnsupportedEncodingException;import java.util.Arrays;public class StringTest1 { /* String 与 byte[]之间的转换 编码:String --> byte[]:调用String的getBytes() 解码: byte[] --> String:调用String的构造器 说明:解码.
2022-02-25 13:10:46 85
原创 String的使用
import org.junit.Test;public class StringTest { /* 结论: 1、常量与常量的拼接结果在常量池,且常量池中不会存在相同内容的常量。 2、只要其中有一个是变量,结果就在堆中。(相当于在堆中重新new了一个对象) 3、如果拼接的结果调用intern()方法,返回值就在常量池中 */ @Test public void test4(){ String s1 = "javaEE..
2022-02-25 13:08:05 962
原创 StringBuffer、StringBuild的使用
import org.junit.Test;public class StringBufferBuilderTest { /* String和StringBuffer、StringBuild之间的转换 String --->StringBuffer、StringBuild:调用StringBuffer、StringBuild的构造器 StringBuffer、StringBuild--->String:1.调用String构造器 .
2022-02-25 13:04:53 421
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人