数组A中给定可以使用的1~9的数,返回由A数组中的元素组成的小于n的最大数。
例如A={1, 2, 4, 9},x=2533,返回2499
暴力解法
import java.util.Scanner;
class Main {
public static int res = Integer.MIN_VALUE;
public static int getMax(int[] array, int target) {
dfs(target, array, 0, 0);
return res;
}
private static void dfs(int target, int[] array, int curVal, int index) {
res = Math.max(res, curVal);
if (index == array.length) return;
for (int i = 0; i < array.length; i++) {
curVal = curVal * 10 + array[i];
if (curVal >= target) {
continue;
}
index++;
dfs(target, array, curVal, index);
index--;
curVal /= 10;
}
}
public static void main(String[] args){
int[] nums= {1, 2, 4, 9};
int maxVal = 2533;
System.out.println(getMax(nums, maxVal));
}
}
deepseek写的双指针贪心: