LeetCode刷题记录
文章平均质量分 66
我的leetcode刷题记录,记录我认为有用的题
Ttang23
此路不通还有桥 没有桥还有船 没有船我还会游泳
展开
-
LeetCode:1207.独一无二的出现次数——Java哈希表
遍历原始数组需要 O(N) 时间,而遍历中间过程产生的哈希表又需要 O(N) 的时间。在该数组中,1 出现了 3 次,2 出现了 2 次,3 只出现了 1 次。如果不同的出现次数的数目等于不同数字的数目,则返回 true,否则返回 false。如果它们的大小相等,说明每个元素的出现次数都是唯一的,方法返回。键是数组中的元素,值是该元素出现的次数。随后再利用新的哈希表,统计不同的出现次数的数目。的每个条目(即每个元素及其出现次数),将出现次数(值)添加到。,如果每个数的出现次数都是独一无二的,就返回。原创 2024-11-23 23:13:00 · 471 阅读 · 0 评论 -
Leetcode:26. 删除有序数组中的重复项——Java快慢指针&暴力解法
从前向后的遍历数组,当我们发现后一个元素与前一个元素相同时,从后向前的覆盖重复的元素。在这个解法中,我们定义了快慢两个指针(fast,slow)。开始向前遍历,当遍历到与慢指针所指元素值不同的元素时,的前五个元素被修改为 0,1,2,3,4.不需要考虑数组中超出新长度后面的元素。不需要考虑数组中超出新长度后面的元素。,返回删除后数组的新长度。删除重复出现的元素,使每个元素。的前两个元素被修改为1,2.函数应该返回新的长度。函数应该返回新的长度。原创 2024-11-08 19:37:56 · 650 阅读 · 0 评论 -
LeetCode:485.最大连续1的个数——简单题简单做
我们可以发现我们目标返回值为3.count在遍历过程中是一个记录清理再记录的过程。而maxCount只保持最大的count数。这个通过Java的Math类库的max方法实现。我们定义一个指针i,从前到后的遍历目标数组,同时设置两个遍历——count和maxCount,开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.count变量在指针i遍历到元素0时清零。, 计算其中最大连续。原创 2024-11-08 19:59:28 · 356 阅读 · 0 评论 -
LeetCode:1.两数之和——Java 暴力解法&哈希表
每一个位于 x 之前的元素都已经和 x 匹配过,因此不需要再进行匹配。而每一个元素不能被使用两次,所以我们只需要在 x 后面的元素中寻找即可。遍历数组中的每一个数,查看是否有与之对应的数使得二者之和为target。在遍历的同时,记录一些信息,以省去一层循环—体现了“空间换时间”的思想,你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。所以,需要记录已经遍历过的数值和它对应的下标,可以借助查找表实现。:O(N2),其中 N 是数组中的元素数量。整数,并返回它们的数组下标。原创 2024-11-06 22:12:40 · 570 阅读 · 0 评论 -
Leetcode:88. 合并两个有序数组——Java暴力解法&双指针
注意,因为 m = 0 ,所以 nums1 中没有元素。nums1 中仅存的 0 仅仅是为了确保合并结果可以顺利存放到 nums1 中。i指针从nums1的第一个0元素即nums[m]处开始遍历。定义两个指针,i指向nums1,j指向nums2。上一个方法没有利用到nums1和nums2已然有序的特点。,5,6] ,其中斜体加粗标注的为 nums1 中的元素。需要合并 [1,2,3] 和 [2,5,6]。需要合并的数组是 [] 和 [1]。需要合并 [1] 和 []。中,使合并后的数组同样按。原创 2024-11-10 00:54:02 · 742 阅读 · 0 评论 -
LeetCode:27. 移除元素
设置一个指针k,并且遍历数组,当元素不为val时,nums[k]更新,并且k++。这样前k项正好是这个数组中不包含val的全部项。但是注意如果出现当两个值均为val的元素相邻时,后向前覆盖可能会导致漏删。此时在下面代码中的“i--”可规避掉这个问题。主要思路:从前往后遍历数组nums,当遇到值与val相等的元素,元素的顺序可能发生改变。如下例子,9,4前移覆盖掉2。移除所有数值等于 val。原创 2024-11-06 21:02:18 · 328 阅读 · 0 评论 -
Leecode:977. 有序数组的平方
使用两个指针分别指向位置 0 和 lenglength−1,每次比较两个指针对应的数,除了存储答案的数组以外,我们需要 O(logn) 的栈空间进行排序。我们会发现,暴力解法为两步:①先把数组中的元素变为平方。除了存储答案的数组以外,我们只需要维护常量空间。:O(nlogn),其中 n 是数组 nums 的长度。:O(n),其中 n 是数组 nums 的长度。平方后,数组变为 [16,1,0,9,100]排序后,数组变为 [0,1,9,16,100]题目说的有序数组,有三种情况。组成的新数组,要求也按。原创 2024-11-06 00:05:41 · 436 阅读 · 0 评论 -
Leetcode:118. 杨辉三角——Java数学法求解
的实例,但有一个重要的点需要注意。(initial capacity),而不是列表的。空间复杂度:O(1)。不考虑返回值的空间占用。生成「杨辉三角」的前 numRows。时间复杂度:O(numRows2)。给定一个非负整数 numRows。,这个参数指定了列表的。原创 2024-11-14 22:44:29 · 473 阅读 · 0 评论 -
LeetCode:448找到所有数组中消失的数字——Java哈希表&布尔数组
最直观的思路是使用哈希集合存储数组 nums 中出现的所有整数,然后遍历 1 到 n 的每个整数并判断是否在哈希集合中,如果一个整数不在哈希集合中则该整数是消失的数字,将该整数添加到结果中。中的数字,并以数组的形式返回结果。数组中对应索引位置的值设置为。如果某个索引位置的值是。中未出现,将其添加到结果列表。,则表示该索引(即数字)在。,表示该索引(即数字)在。原创 2024-11-16 00:49:04 · 503 阅读 · 0 评论 -
Leetcode:645. 错误的集合——Java暴力解法&哈希表法
其余的每个数字在数组中出现 1 次。因此可以使用哈希表记录每个元素在数组中出现的次数,然后遍历从 1 到 n 的每个数字,分别找到出现 2 次和出现 0 次的数字,即为重复的数字和丢失的数字。首先,题目中未说明nums数组是按照有序的顺序给出的。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合。我们把数组中的数字都存入哈希表中。请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。重复的数字在数组中出现 2 次,丢失的数字在数组中出现 0 次。原创 2024-11-11 01:13:48 · 471 阅读 · 0 评论