自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 字符串和其他类型的转化

(2)Byte:Byte.parseByte(String s, int radix) : 以 radix 为基底 将 s 转换为 byte ,比如说 Byte.parseByte(“11”, 16) 会得到 17。(3)double : Double.parseDouble(String s) : 将 s 转换成 double。(1)byte : Byte.parseByte(String s) : 将 s 转换成 byte。

2024-06-07 14:14:27 195

原创 738单调递增的数字

如果不符合题目要求的条件,即前一个数大于后一个数,那么如果前一个数字不变,后一个数字如果减小,那么肯定还是小于前一个数,如果后一个数字增大,那么会超过原来的数字,不符合条件。因此,只能前一个数字减1。如果从前往后遍历,前一个数大于后一个数,前一个数字减1,但是可能又会小于“它”的前一个数字。因此从后往前遍历,可以重复利用上次比较得出的结果。

2024-06-07 14:09:27 146

原创 134. 加油站

计算每一个加油站的油量减去当前加油站到下一加油站所需要的油量,将他们都累加。如果在某一个加油站累加的值小于0,说明从0到该点中的一点作为起点都不能到达终点。从该点的下一个位置重新判断,下一个位置开始,重新计算累加值,直至遍历完所有加油站。如果所有加油站的差值累加都小于0,说明消耗的油量大于加油站的油量,肯定行驶一周。

2024-06-03 19:51:12 129

原创 45.跳跃游戏 II

【代码】45.跳跃游戏 II。

2024-06-03 19:43:42 98

原创 55跳跃游戏

从题目整体去把握,不一定非要明确一次究竟跳几步,在当前点的覆盖范围内,去计算在这个范围内的点,是否有某一点加上它的值能够到达或超过最后一个元素,每次达到一个点就计算,如果比当前覆盖范围更大,就去更新。

2024-06-01 15:59:51 102

原创 53 最大子数组和

当前面连续和为负数时,要放弃,下一个位置为起始位置。变量sum记录最大的子数组和。count不断变化,当前面连续子数组和小于0时,count置于0,相当于放弃前面的子数组,下一个位置设置为新子数组的起始位置。

2024-05-27 21:09:49 128

原创 15 三数字之和18四数值之和

首先将数组排序,定义一个for循环,i从0开始,设置left和right指针,left为i+1,right为nums.length,在数组中找到 abc 使得a + b +c =0,我们这里相当于 a = nums[i],b = nums[left],c = nums[right]。如果当前和大于0,需要right–,如果当前和小于0,需要left++,如果正好等于0,需要将值记录到result二维数组中。循环结束条件,right<left。四数之和同理,需要固定两个。两层for循环固定遍历前两个数。

2024-05-24 19:34:14 302

原创 1. 两数之和

遍历数组,查看哈希表中是否有和当前遍历的数之和符合条件的,如果有,就找到,如果没有就继续将当前数存入哈希表,遍历下一个数,直至遍历完所有数组。

2024-05-21 16:43:45 100

原创 454. 四数相加 II

首先是算前两个数组的各种可能性的和,然后将和sum存入哈希表map中,key为sum,value代表和为sum的可能性次数。接着利用二重for循环遍历接下来两个数组,计算和,然后看哈希表中是否有key+当前和等于0,如果等于0说明符合条件,就将Value(计数)的值加入到res中。res代表符合题目要求的个数。通过看卡哥的题解,发现原来可以用两重for循环结合哈希表就能解出出来,时间复杂度数量级降低。刚开始的想法是四重for循环,将每种可能找出来。

2024-05-21 16:39:35 193

原创 力扣349,350

map1.getOrDefault(num,0)获取key为num的函数,如果没有返回默认值0。350 输出重复的元素(次数),用Map集合,key是值,value是次数。set1.contains(i)哈希表是否存在该元素。349 去判断是否有重复的数,用Set集合。set1.remove(i)删除元素。map1.remove(k)删除元素。set1.add(i) 添加元素。map1.put(k,v)添加元素。

2024-05-17 13:30:19 117

原创 202 快乐数

(2)快慢指针:前面做过判断环形链表的题目,十分类似,设置一个快指针一个慢指针,快指针一次走两步,慢指针一次走一步,如果快指针和慢指针的数相同,就表明有循环,判断是哪个数相同,如果是1,则是快乐数,如果不是1,就不是快乐数。(1)哈希表:题目描述中说可能会无限循环,这就表明sum一定会取到重复值。那么就可以用Set集合,如果得到的sum重复了,但是不是1,那么就表明这不是一个快乐数。

2024-05-17 13:22:56 168

原创 面试题01.07.链表相交

后来参考了答案,采用了这样的方法。先判断两个链表长度,只需要将长的链表头指针移动至和短的链表到末尾大小一致的地方。然后对两条链表同时开始判断,只需要判断两个结点是否相等即可。注:通过判断大小,首先就规定一个大一个小,如果不符合规定条件,就进行交换,否则不交换,这样减少代码量。刚开始自己在想两个链表长度不一样,怎么判断呢,思考非常复杂。

2024-05-11 12:46:34 139 1

原创 142环形链表Ⅱ

假设,x+y是慢指针走的距离,x+y+n*(y+z)是快指针走的距离,其中n大于等于1,那么2(x+y)=x+y+n*(y+z),那么x=(n-1)(y+z)+z,这就相当于,从相遇点算,起点到入口点的距离等于相遇点到入口点+圈的长度*次数。这就是说,相遇点每次在环里走一步,起点每次向入口点走一步,直至同时走到入口点,这可能转了好多圈,也可能没转圈,相等的位置就是入口点。(1)如何判断是环:设置一个快指针一个慢指针,快指针每次移动两步,慢指针每次移动一步,如果不是环,快指针最后会指向null。

2024-05-11 12:30:44 259 1

原创 19 删除链表的倒数第N个结点

【代码】19 删除链表的倒数第N个结点。

2024-05-11 11:59:23 316 1

原创 24 两两交换链表中的结点

(2)设置两个临时结点保存,cur后的第一个和第二个结点,对他们进行交换,然后重新设置cur的指向,不断循环,直至不符合(1)。(1)若当前结点为cur,判断cur后面是否还有两个结点,如果没有结点或者只有一个结点就不需要再进行交换了,直接退出循环。

2024-05-11 11:32:12 170 1

原创 206 反转链表

然后就要开始反转了,首先要把 head->next 结点用r指针保存一下,也就是保存一下这个结点。然后改变当前结点也就是head节点中next的指向,最后移动指针,head指向下一个节点,pre指向下一个结点的前结点。首先定义一个pre指针,初始化为null,再定义一个r指针,初始化为null。使用虚拟结点,头插法,每次将下一个结点插入到虚拟结点之后。只需要改变链表中next的指向,就能反转链表。

2024-05-11 10:46:57 270 1

原创 203移除链表元素

需要设置两个指针,一个指向当前结点,一个指向当前结点的上一个结点,这样才能进行删除。

2024-05-11 10:18:02 137 1

原创 替换数字(灵活的思路)

题解:首先扩充数组,设置双指针,一个指向扩充前数组的最后一个字符,一个指向扩充后数组的最后位置,旧数组从后往前遍历,如果不是数字,新数组就赋值,如果是数字,新数组从后往前赋值rebmun,时间复杂度O(n)。如果从前往后赋值,还需要移动元素,时间复杂度O(n*n)从后向前填充元素,避免了从前向后填充元素时,每次添加元素都要将添加元素之后的所有元素向后移动的问题。

2024-04-09 21:57:49 92

原创 java String类型转其他类型

【代码】java String类型转其他类型。

2024-04-09 17:24:48 116

原创 java 输入语法复习

【代码】java 输入语法复习。

2024-04-09 17:23:51 63

原创 字符串反转模板

给定数组,反转的初始位置和结束位置。

2024-04-09 17:18:07 98

原创 151 反转字符串中的单词

首先用快指针对字符串进行遍历,找到第一个不为空格的字符,通过slow变量判断当前是否为第一个单词(slow等于0证明这是第一个单词),如果是第一个单词,就利用快慢指针覆盖,将整个单词全部覆盖完,不需要考虑前面的空格。如果slow不等0,证明当前不是第一个单词,因此需要加上一个空格,再利用快慢指针覆盖。当遇到空格或者末尾时,证明前面的是一个单词,通过变量j确定单词的起始位置,不断更新,i是终止位置。(1)去除多余的空格(前导空格,中间多余的空格,末尾的空格)

2024-04-08 18:04:40 162

原创 541反转字符串II

反转:已知字符数组的起始位置和终止位置,起始位置不断+1,终止位置不断-1,将前后两个字符交换,直至起始位置等于终止位置,也就是到中间,这时字符数组已全部反转完毕。注:java中的String对象不可更改。将String对象通过toCharArray()方法转成字符数组,方便修改。k超过边界但是当前位置+k不超过边界),只反转前k个字符串。该题边界指的是数组最后一个字符的下一个位置。如果当前位置+k超出字符数组边界,将剩余字符串全部反转,否则(当前位置+2。k不超过边界或者当前位置+2。

2024-04-08 16:36:48 87

原创 977.有序数组的平方

所以元素平方的最小值为必在中间,最大值必在两边,通过双指针,从两边开始比较,大的放入新数组,并移动,直至两个指针越过。亮点:由于原数组是按顺序排序的,而且可能有负数。

2024-03-07 20:58:11 100 1

原创 贪心算法之区间重叠问题(moving tables)

接法(1)思路:对于本题的求解,我们可以先求出移动桌子时,经过每间房间的次数,继而求出经过其中一个房间的最大次数,将桌子从一个房间移到另一个房间可以在10分钟内完成,因为每个房间移动桌子的路线不能重叠,所以最大次数*10就是所需的时间。注(1 memset函数:是对数组每个值进行清0;2 因为房间共400个,但都是对称排列,对于小的一个房间号,如果是从偶数的序号开始,那么一定经过对应的...

2020-03-22 17:55:20 790

原创 DOS与BIOS【2】(异与同)

DOS调用主要是为了文件管理提供一些以文件形式进行输入与输出的高层管理功能。BIOS只提供一些最基本的输入与输出的功能,没有DOS中的对文件,目录和内存的管理。有些DOS可调用BIOS实现功能。DOS调用的缺点:速度慢,仅在安装DOS的操作系统中才能适用。优点是:灵活,移植性好。BIOS调用优点:不受任何操作系统影响。(注)BIOS需要使用者对计算机硬件有充分了解。...

2020-03-19 17:46:56 979

原创 BIOS与DOS 【1】(基本概念与其功能)

DOS与BIOS基本概念与其功能:DOS其实就是磁盘操作系统(Disk Operating System),是用来控制和管理计算机的硬件资源、方便用户使用的程序集合。为什么称为磁盘操作系统?是因为由于这些软件程序存放在磁盘上,而且主要功能是进行文件管理和输入输出设备管理。BIO是固化在只读存储器ROM中的基本输入输出程序(Basic Input Output System)。BIOS保存着...

2020-03-19 17:39:10 961

空空如也

空空如也

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

TA关注的人

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