Leetcode Hot 100 普通数组
56 合并区间
class Solution {
public int[][] merge(int[][] intervals) {
Arrays.sort(intervals, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
if(o1[0] != o2[0])
return o1[0] - o2[0];
else
return o1[1] - o2[1];
}
});
List<int[]> res = new ArrayList<>();
int nl = intervals[0][0], nr = intervals[0][1];
for(int i=1;i<intervals.length;++i){
if(intervals[i][0] <= nr) {
nr = Math.max(nr,intervals[i][1]);
}
else{
res.add(new int[]{nl,nr});
nl = intervals[i][0];
nr = intervals[i][1];
}
}
res.add(new int[]{nl,nr});
return res.toArray(new int[0][]);
}
238 除自身数组外的乘积
class Solution {
public int[] productExceptSelf(int[] nums) {
int[] l = new int[nums.length];
int[] r = new int[nums.length];
l[0] = 1;
for (int i=1;i<nums.length;++i)
l[i] = l[i-1] * nums[i-1];
r[nums.length-1] = 1;
for(int i=nums.length-2;i>=0;i--){
r[i] = r[i+1] * nums[i+1];
}
int[] res = new int[nums.length];
for(int i=0;i<nums.length;++i)
res[i] = l[i]*r[i];
return res;
}
}
41 缺失的第一个正数
class Solution {
public int firstMissingPositive(int[] nums) {
int len = nums.length;
for (int i=0;i<nums.length;++i){
if(nums[i] <= 0){
nums[i] = len+1;
}
}
for(int i=0;i<nums.length;++i){
int realnum = Math.abs(nums[i]);
if(realnum <= len){
if(nums[realnum-1] > 0)
nums[realnum-1] = -nums[realnum-1];
}
}
for(int i=0;i<len;++i)
if(nums[i] > 0)
return i+1;
return len+1;
}
}
注意点
- res.toArray(new int[0][]);
- “前缀积” 数组的解法 (0异常)