368. Largest Divisible Subset
https://leetcode.com/problems/largest-divisible-subset/
用sort来固定条件,同时注意这个List<Integer>[]的用法,感觉很有用,除此之外思路其实蛮简单,所谓的接龙
class Solution {
public List<Integer> largestDivisibleSubset(int[] nums) {
//注意这一行的写法
List<Integer>[] subset = new ArrayList[nums.length];
Arrays.sort(nums);
for (int i = 0; i < nums.length; i++) {
subset[i] = new ArrayList<>();
subset[i].add(nums[i]);
}
int max = 0;
int idx = 0;
for (int i = 1; i < nums.length; i++) {
int maxsize = 0;
int maxidx = -1;
for (int j = i-1; j >= 0; j--) {
if (nums[i] % nums[j] == 0) {
if (maxsize < subset[j].size()+1) {
maxsize = subset[j].size()+1;
maxidx = j;
}
}
}
if (maxidx != -1) {
subset[i].addAll(subset[maxidx]);
if (max < subset[i].size()) {
max = subset[i].size();
idx = i;
}
}
}
return subset[idx];
}
}
Last updated