sweet1cris

Untitled

Feb 9th, 2018
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.05 KB | None | 0 0
  1.  
  2. public class Solution {
  3.     public List<Integer> largestDivisibleSubset(int[] nums) {
  4.         Arrays.sort(nums);
  5.         int[] f = new int[nums.length];
  6.         int[] pre = new int[nums.length];
  7.         for (int i = 0; i < nums.length; i++) {
  8.             f[i] = 1;
  9.             pre[i] = i;
  10.             for (int j = 0; j < i; j++) {
  11.                 if (nums[i] % nums[j] == 0 && f[i] < f[j] + 1) {
  12.                     f[i] = f[j] + 1;
  13.                     pre[i] = j;
  14.                 }
  15.             }
  16.         }
  17.        
  18.         List<Integer> ans = new ArrayList<Integer>();
  19.         if (nums.length == 0) {
  20.             return ans;
  21.         }
  22.         int max = 0;
  23.         int max_i = 0;
  24.         for (int i = 0; i < nums.length; i++) {
  25.             if (f[i] > max) {
  26.                 max = f[i];
  27.                 max_i = i;
  28.             }
  29.         }
  30.         ans.add(nums[max_i]);
  31.         while (max_i != pre[max_i]) {
  32.             max_i = pre[max_i];
  33.             ans.add(nums[max_i]);
  34.         }
  35.         Collections.reverse(ans);
  36.         return ans;
  37.     }
  38. }
Advertisement
Add Comment
Please, Sign In to add comment