自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 114.二叉树展开为链表

首先我们需要找出左边树的最右边的节点以便把右边树接过来。然后将新节点的左边树移到右边的树的位置上,再将原来右边树接到左边树上,直到新的右边树为null。方法一:前序遍历(类似与Morris算法)方法二:前序遍历(递归)

2024-01-19 22:19:44 388 1

原创 2171.拿出最少数目的魔法豆

我们可以对 beans 数组升序排序。那么对于排序后数组下标为 i 的元素,对应的。我们先设beans 数组的长度为 b.在对数组进行遍历维持上式最小值即可。

2024-01-18 21:46:02 391 1

原创 在一个由 ‘0‘ 和 ‘1‘ 组成的二维矩阵内,找到只包含 ‘1‘ 的最大正方形,并返回其面积。

那么从第0行到第2行的纵向累加和为:5 1 3 3。遍历矩阵中的每个元素,每次遇到 1,则将该元素作为正方形的左上角.确定正方形的左上角后,根据左上角所在的行和列计算可能的最大正方形的边长(正方形的范围不能超出矩阵的行数和列数),在该边长范围内寻找只包含 1 的最大正方形。如果我们能计算出所有 dp(i,j)\textit{dp}(i, j)dp(i,j) 的值,那么其中的最大值即为矩阵中只包含 111 的正方形的边长最大值,其平方即为最大正方形的面积。方法三:利用矩阵相加(有这个想法但自己没有实现)

2023-12-08 15:14:25 535

原创 给你一个字符串 jewels 代表石头中宝石的类型,另有一个字符串 stones 代表你拥有的石头。 stones 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。

【代码】给你一个字符串 jewels 代表石头中宝石的类型,另有一个字符串 stones 代表你拥有的石头。stones 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。

2023-12-05 10:16:23 431 1

原创 给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数

首先创建一个ArrayList,并将不重复的数放入ArrayList中,对比数与数之间的关系,若相等则删除该数。方法三:哈希表(在其他地方看到的)

2023-12-04 15:36:51 952

原创 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。

首先将 l 指向字符数组首元素,r 指向字符数组的尾元素。当 l < r 左指针向右移一位,右指针向左移一位。若 l >= r 反转结束,返回数组就可得到所需结果。

2023-12-01 10:49:31 634 1

原创 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

若一个链表为空直接返回非空链表作为合并后的结果,若不为空,则选取节点值较小的那个作为新的链表的当前节点,将递归后的链表附在其后。

2023-11-30 17:13:52 680

原创 以数组 intervals 表示若干个区间的集合,请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。

数组类型的定义不能使用基本类型,因为ArrayList里面只能放引用类型,不能放基本类型,如int[ 0] 就会报错(我们可以使用Integer[ 0 ]).但是可以返回int [ ] [ ] ,因为Java中的二维数组int [ ] [ ]可以看成存放在int [ ] 的数组,而int [ ] 是引用类型。当答案数组中最后一个区间的右端点小于我们所考虑的区间的左端点,说明两个区间不会重合。我们直接将当前区间加入数组末尾。1、paramaters:类似方法中的形参列表,这里的参数是函数式接口里的参数。

2023-11-29 11:46:02 503 1

原创 你总共有 n 枚硬币,并计划将它们按阶梯状排列。对于一个由 k 行组成的阶梯,其第 i 行必须正好有 i 枚硬币。阶梯的最后一行 可能 是不完整的。给你一个数字 n ,计算并返回可形成 完整阶梯行

将元素一个一个的试,当它排列不满一行时输出具有完整元素的行数。将x取整就会得到完整的阶梯行数。(另一个x小于零舍去)方法一:数学方法求解。

2023-11-28 07:51:17 391

原创 给你一个整数数组 nums,将 nums 中的的所有偶数元素移动到数组的前面,后跟所有奇数元素。返回满足此条件的 任一数组 作为答案。

左指针从左到右遇到偶数遍历,右指针从右往左遇到奇数遍历。定义一个临时变量将左指针的数组赋予这个位置,再将右指针的数组赋予左指针的数组。从而达到前偶后奇的效果。将数组进行两次遍历,首先遍历一次将偶数放在新数组中,在遍历一次将奇数依次放在数组里。

2023-11-27 11:04:15 461

原创 峰值元素是指其值严格大于左右相邻值的元素。给你一个整数数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。

由于题目中提到了可以假设 “ 对于所有有效的 i 都有 nums[i]!所以我们可以使用二分查找法来解决这类问题。由于题中规定了相邻两个元素不相等,且最大值两侧一定严格的小于最大值。所以可以遍历数组找出最大值对应的位置。

2023-11-24 14:25:13 449 1

原创 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。

我首先假设除了整数 0 之外,这个整数不会以零开头。可以判断最后一位数是否为 9,若不为9进行遍历。若为 9 则将 0 的值赋予这个位置。最后只剩下了为 0 的情况,将 1 的值赋予此位置。

2023-11-24 08:00:49 592 1

原创 给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。

利用Arrays类的中的sort方法进行快速排序,再遍历数组,对数组进行比较。

2023-11-21 11:01:02 452

原创 给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。

先将数组进行排序,找到符合num[ i ]!= i 的位置,则该位置的数 i 就是数组中缺失的数。若在该范围内恒存在nums[ i ] 则缺失的数就为 a。利用数学求和公式进行求解,将[0,n]所有的数加和并与原数组nums的和,相减得到的差就是没有出现在这个数组中的数。总和=(首项+末项)X项数/2。

2023-11-20 16:36:03 333 1

原创 给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。

/ 用于记录频率的Map。例如:var a = [2,5,1,2,1],2 ^ 5 ^ 1 ^ 2 ^ 1=2 ^ 2 ^ 1 ^ 1 ^ 5=0 ^ 0 ^ 5。思路:将输入数组的值分配给另一个数组,并记录数的出现频率,只需输出出现频率为二的数。// 遍历输入数组,计算频率并分配值到新数组。ps:方法二的代码没有进行验证,可以提供一个思路进行参考。// 输出频率为二的数。方法一:利用异或手段来解决。

2023-11-15 21:57:19 451

空空如也

空空如也

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

TA关注的人

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