首页 > 其他分享 >BM56 有重复项数字的全排列(回溯)

BM56 有重复项数字的全排列(回溯)

时间:2024-03-24 22:29:56浏览次数:16  
标签:temp 重复 res ArrayList BM56 vis int num 回溯

在这里插入图片描述
在这里插入图片描述

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param num int整型一维数组 
     * @return int整型ArrayList<ArrayList<>>
     */
    
    public void recursion(ArrayList<ArrayList<Integer>> res,ArrayList<Integer> temp,int[] num,boolean[] vis){

        if(temp.size() == num.length){
            res.add(new ArrayList<Integer>(temp));
        }
        for(int i = 0; i < num.length; i++){
            if(vis[i]) 
                continue;
            if(i > 0 && num[i-1] == num[i] && !vis[i-1])
                continue;

            vis[i] = true;
            temp.add(num[i]);
            recursion(res,temp,num,vis);
            vis[i] = false;
            temp.remove(temp.size()-1);
        }


    }




    public ArrayList<ArrayList<Integer>> permuteUnique (int[] num) {
        // write code here
        

        ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();
        ArrayList<Integer> temp = new ArrayList<Integer>();

        Arrays.sort(num);
        boolean[] vis = new boolean[num.length];
        Arrays.fill(vis,false);

        
        recursion(res,temp,num,vis);

        return res;
    }
}

标签:temp,重复,res,ArrayList,BM56,vis,int,num,回溯
From: https://blog.csdn.net/qq_46034034/article/details/136993409

相关文章

  • python处理excel,删除行和列+去除重复列
    删除指定的行与列点击查看代码importxlwingsasxw#下載下來的Excel,列和行有很多空白的,要先刪除掉.#打开Excel文件workbook=xw.Book('test.xlsx')sheet=workbook.sheets[0]#删除1-12行sheet.range('1:12').api.EntireRow.Delete()#删除A-G列sheet.range(......
  • portfinder.getPort( { port: 8080, // 默认8080端口,若被占用,重复+1,直到找
    https://github.com/wkylin/pro-sale-charge/blob/df7fa93c8673701e6897f18498cab78a7fbb05d7/webpack/webpack.dev.js#L77C1-L92C3constportfinder=require('portfinder')module.exports=newPromise((resolve,reject)=>{portfinder.getPort(......
  • SQL语句:对重复字段的记录,只保留时间最新的一条记录
    selectt.*,t.rowidfromMHQC04_NORMLIZEtwherest_no='HQ4M61WW'orderbytimecreateddesc根据上面表字段和表名称,oracle语句,功能为,对于st_no重复的记录,只保留timecreated时间最新的一条,其余的删除。DELETEFROMMHQC04_NORMLIZEWHERErowidIN(SELECTrow......
  • Java回溯知识点(含面试大厂题和源码)
    回溯算法是一种通过遍历所有可能的候选解来寻找所有解的算法,如果候选解被确认不是一个解(或至少不是最后一个解),回溯算法会通过在上一步进行一些变化来丢弃这个解,即“回溯”并尝试另一个候选解。回溯法通常用递归方法来实现,在解决排列、组合、选择问题时非常有效。回溯算法的......
  • 算法打卡day25|回溯法篇05|Leetcode 491.递增子序列、46.全排列、47.全排列 II
     算法题Leetcode491.递增子序列题目链接:491.递增子序列大佬视频讲解:递增子序列视频讲解 个人思路和昨天的子集2有点像,但昨天的题是通过排序,再加一个标记数组来达到去重的目的。而本题求自增子序列,是不能对原数组进行排序的,因为排完序的数组都是自增子序列了。解决......
  • 【刷题笔记】回溯算法 - ⭐去重问题
    代码随想录讲解:代码随想录(programmercarl.com)只是在刷题过程中记录一下自己的想法,因为总是记不住去重逻辑。回溯算法:回溯法,一般可以解决如下几种问题:组合问题:N个数里面按一定规则找出k个数的集合切割问题:一个字符串按一定规则有几种切割方式子集问题:一个N个数的集合里有......
  • 删除有序链表中重复的元素-1
    描述删除给出链表中的重复元素(链表中元素从小到大有序),使链表中的所有元素都只出现一次例如:给出的链表\(1\to1\to2\),返回\(1\to2\)给出的链表为\(1\to1\to2\to3\to3\),返回\(1\to2\to3\)数据范围:链表长度满足\(0\len\le100\),,链表中任意节点的值满足\(\midval\mid\le1......
  • 如何通过sql查表某字段是否有重复的内容
    要通过SQL查询来检查表中某个字段是否存在重复的内容,你可以使用GROUPBY和HAVING子句来实现。以下是一个简单的例子,假设我们有一个名为users的表,我们想要检查其中的email字段是否存在重复的内容:SELECTemail,COUNT(*)AScountFROMusersGROUPBYemailHAVINGcou......
  • MVC和.net6,API的body在过滤器中重复消费
    在MV中privateasyncTask<string>ReadPostDataAsync(HttpActionContextactionContext,CancellationTokencancellationToken){stringpostData="";varrequestStream=awaitactionContext.Request.Content.ReadAsS......
  • 代码学习第24天----回溯算法
    随想录日记part24time:time:time:2024.03.10主......