hot100--普通数组
53.最大子数组和
- ⚠️ 思路:首先定义sum,maxSum(请注意,不能初定义为0,因为数组里的元素可能为负数),分别表示 当前和 及 历史最大和,遍历数组,去判断 当前数 与 之前的和加当前数的总和 谁大,并赋值给sum,同时更新全局历史最大和(maxSum)

56.合并区间
- ⚠️ 思路:首先对数组按照第一个元素进行升序排序(
Arrays.sort(数组名,(a,b) -> a[0] - b[0])),设置start,end,将end与下一个数的起始进行比较;如果起始小于或等于end,则end等于end和下一个数的终止之间的较大值;如果起始大于end,将start和end赋值给一个数组,存进list中,然后将本次循环数的起始和终止值赋值给start,end。在循环结束后,记得再存进当前的start,end(表示最后一组数),最后将list转换为二维数组(list.toArray(new int[list.size()][2]))

189.轮转数组(对原数组进行,无额外创建数组)
- ⚠️ 思路:对数组进行
三次翻转就能得到答案,首先需要处理k,k = k%nums.length()(因为如果k==数组长度,轮转完还是等于原数组),然后先对整个数组进行翻转,再对前k个数进行翻转,再对后面的数进行翻转,得出结果;翻转的功能去创建一个方法实现

238.除了自身以外数组的乘积
- ⚠️ 思路:定义数组
pre,suf分别存储前缀积与后缀积,设置最左边的数前缀积为1,后面一个数(n)的前缀积为 (n-1) * n-1的前缀积,后缀积同理,最后的答案是前缀积*后缀积


浙公网安备 33010602011771号