
LeetCode算法
文章平均质量分 78
学习快乐小王子
这个作者很懒,什么都没留下…
展开
-
Leetcode刷题--字符串
掌握字符串的一些API函数。第1题: 344. 反转字符串题目描述:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。翻译:这个不是要输出,而是让你修改原数组,对原数组进行翻转。思路:直接双指针法。题解:class Solution { public void reverseString(char[] s) { //这里不是要打印,原创 2021-12-13 19:09:51 · 572 阅读 · 0 评论 -
Leetcode刷题--哈希表
基础知识哈希表: 数组 + 链表作用:能快速判断一个元素是否存在一个集合中。 时间复杂度是: O(1)。原理:因为使用了哈希算法,可以计算key的哈希值,然后映射到链表中,通过数组下标快速的访问到这个元素。 最简单的映射关系: 下标 = hash值 % tableSize。问题:会出现Hash冲突,就是计算不同的key得到同一个值,放到数组的同一个下标,即发生了Hash冲突。解决方案:(1)拉链法:冲突的元素直接变量链表。这个要防止链表的长度太长了,影响查询的效率。(2)线性探测法: 冲突原创 2021-12-13 14:56:50 · 659 阅读 · 0 评论 -
Leetcode刷题--链表
基本内容链表知识点总结:(1)内存地址不是连续的。(2)包含数据域 和 指针。(3)更加适合于增删。增删是O(1)。查询速度慢,查询是O(n)。Leetcode 题目类型一 删除元素第1题: 203. 移除链表元素题目描述: 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。思路:在操作链表的时候,非常重要的一个点就是要学会使用虚拟的头结点,这样可以省去很多麻烦。有了虚拟头结点之后,所有的节点都原创 2021-12-09 16:31:05 · 265 阅读 · 0 评论 -
Leetcode刷题--数组
Leetcode刷题--数组基本内容Leetcode 题目类型一 二分查找相关基本内容数组是一种数据结构,他和链表经常会被用作比较。他们使用的场景不同。数组需要注意的有:(1)内存地址是连续的。数组一旦初始化完成之后,他的长度就固定了,不能修改。如果需要修改数组的长度,那么肯定就是建了一个新的数组,可以实现对数组里面的元素进行删除或者增加。(2)数组是有下标的。下标从0开始,可以通过下标迅速的访问到数组的元素,因为是通过内存地址来访问的,非常快。Leetcode 题目类型一 二分查找相关第原创 2021-12-08 17:01:25 · 882 阅读 · 0 评论 -
leetcode 343整数拆分 动态规划解法
动态规划:解决的三种常见问题:1.最值型问题。2.计数型问题,求和。3.存在性问题。动态规划四步曲:1.确定状态1.1最后一步:比如:硬币的问题,可以假设最后一个硬币使用的是ak。1.2化成子问题:要求最少的硬币拼出n,就是要求最少的硬币拼出n-ak。2.转移方程这个比较难,转移方程找好了,就成功了一半。3.初始条件和边界情况要确定定义的初始条件。4.计算顺序一般都是从小到大进行计算。也有可能从大到小。现在看这个整数拆分的问题:给定一个正整数 n,将其拆分为至少两个正整数的和原创 2021-08-14 10:16:50 · 396 阅读 · 0 评论