La suma del número de combinaciones 2

tema:

Dada una serie de candidatos y un objetivo de número objetivo, averigüe todas las combinaciones de candidatos que pueden hacer la suma de los números objetivo.
Cada número de candidatos solo se puede usar una vez en cada combinación.

Descripción:

Todos los números (incluido el número objetivo) son números enteros positivos.
El conjunto de soluciones no puede contener combinaciones repetidas.

Inserte la descripción de la imagen aquí

Análisis:

Primera referencia:
Buscando subconjunto I
Buscando subconjunto II

A esta pregunta solo se le agrega un tamaño y condición de subconjunto de juicio .

Podemos seguir el método de buscar el subconjunto II, primero encontrar todos los subconjuntos y luego encontrar la suma del elemento como un subconjunto del objetivo.

Pero de nuevo porque:
Inserte la descripción de la imagen aquípara que podamos
Inserte la descripción de la imagen aquí

Código:

class Solution {
    
    
    public List<List<Integer>> combinationSum2(int[] nums, int target) {
    
    
    List<List<Integer>> ans = new ArrayList<>();
    Arrays.sort(nums); //排序
    getAns(nums, 0, new ArrayList<>(), ans,0,target);
    return ans;
}

private void getAns(int[] nums, int start, ArrayList<Integer> temp, List<List<Integer>> ans, int sum,int target) {
    
    
     if(target==0){
    
    
       ans.add(new ArrayList<>(temp));
      return;
     }
    for (int i = start; i < nums.length; i++) {
    
    
        //和上个数字相等就跳过
        if (i > start && nums[i] == nums[i - 1]) {
    
    
            continue;
        }
        sum=sum+nums[i];
        if(sum>target){
    
      //剪枝操作
              return;
        }
         temp.add(nums[i]);
        if(target==sum){
    
       //符合要求,加入返回结果
           ans.add(new ArrayList<>(temp));
        }
        getAns(nums, i + 1, temp, ans,sum,target);
        temp.remove(temp.size() - 1);
        sum=sum-nums[i];

    }
}
}

Fuente: LeetCode
Enlace: https://leetcode-cn.com/problems/combination-sum-ii Los
derechos de autor son propiedad de LeetCode . Para reimpresiones comerciales, comuníquese con la autorización oficial. Para reimpresiones no comerciales, indique la fuente.

Supongo que te gusta

Origin blog.csdn.net/weixin_42120561/article/details/114270944
Recomendado
Clasificación