Permutations 排序(有重复数)II @LeetCode

PointNet++改进策略目录 后续我将如何使用文章中创新点加入的PointNet++中代码实现部分进行更新。 阅读详情

比起http://blog.youkuaiyun.com/fightforyourdream/article/details/14217105

多加了一个while来去重,发现这个去重方法在另一道题也用过,同样也是DFS里面去重,很好用!

另外就是在最前面加了一个sort,因为如果没加,当输入乱序时就会Output Limit Exceed!


package Level4;

import java.util.ArrayList;
import java.util.Collections;

/**
 * Permutations II 
 * 
 * Given a collection of numbers that might contain duplicates, return all possible unique permutations.

For example,
[1,1,2] have the following unique permutations:
[1,1,2], [1,2,1], and [2,1,1].
 *
 */
public class S47 {

	public static void main(String[] args) {
		int[] num = {1,2,1};
		System.out.println(permuteUnique(num));
	}
	
	public static ArrayList<ArrayList<Integer>> permuteUnique(int[] num) {
		ArrayList<ArrayList<Integer>> ret = new ArrayList<ArrayList<Integer>>();
		ArrayList<Integer> done = new ArrayList<Integer>();
		ArrayList<Integer> rest = new ArrayList<Integer>();
		for(int val : num){
			rest.add(val);
		}
		Collections.sort(rest);		// 这里要先排序一下。。否则遇到非递增排序的输入就会Output Limit Exceed!
		rec2(done, rest, ret);
		return ret;
	}
	
	public static void rec2(ArrayList<Integer> done, ArrayList<Integer> rest, ArrayList<ArrayList<Integer>> ret){
		if(rest.size() == 0){
			ret.add(new ArrayList<Integer>(done));
			return;
		}
		
		for(int i=0; i<rest.size(); i++){
			done.add(rest.get(i));
			ArrayList<Integer> newRest = new ArrayList<Integer>(rest);
			newRest.remove(i);
			rec2(done, newRest, ret);
			done.remove(done.size()-1);
			
			while(i<rest.size()-1 && rest.get(i)==rest.get(i+1)){
				i++;
			}
		}
	}
}

过滤重复元素方法同 http://blog.youkuaiyun.com/fightforyourdream/article/details/16859111

public class Solution {
    public ArrayList<ArrayList<Integer>> permuteUnique(int[] num) {
        ArrayList<ArrayList<Integer>> ret = new ArrayList<ArrayList<Integer>>();
        ArrayList<Integer> done = new ArrayList<Integer>();
        ArrayList<Integer> rest = new ArrayList<Integer>();
        Arrays.sort(num);
        for(int val : num){
            rest.add(val);
        }
        rec(done, rest, ret);
        return ret;
    }
    
    public void rec(ArrayList<Integer> done, ArrayList<Integer> rest, ArrayList<ArrayList<Integer>> ret){
        if(rest.size()==0){
            ret.add(new ArrayList<Integer>(done));
            return;
        }
        
        for(int i=0; i<rest.size(); i++){
            int first = rest.remove(i);
            done.add(first);
            rec(done, rest, ret);
            done.remove(done.size()-1);
            rest.add(i, first);     // insert to its original position
            while(i+1<rest.size() && rest.get(i)==rest.get(i+1)){
                i++;
            }
        }
    }
}


【AI 赋能:Python 人工智能应用实战】16. BERT微调实战:中文新闻分类全流程(附模型蒸馏+ONNX部署完整代码) 中文新闻分类是NLP领域的经典实用任务,BERT模型凭借双向上下文建模能力,能有效解决中文歧义与长文本依赖问题,但存在推理速度慢、资源占用高的痛点。本文以THUCNews中文新闻数据集为核心,提供从数据预处理、BERT微调、模型蒸馏到生产部署的全流程实操指南。首先详解THUCNews的多编码读取与清洗(解决gbk/utf-8兼容问题);然后实现BERT微调,加入早停机制与混淆矩阵可视化,验证准确率达93.8%;接着用DistilBERT完成模型蒸馏,在仅损失0.6%准确率的前提下,将推理速度提升2.7倍。 阅读详情

相关推荐

给硬件工程师的UCIe软件配置入门:从寄存器表到实战调试,一篇讲透

本文为硬件工程师提供UCIe软件配置的全面指南,从寄存器表解析到实战调试技巧,涵盖链路训练、错误排查等关键环节。通过详细代码示例和分层诊断法,帮助工程师快速掌握UCIe寄存器访问机制,提升异构集成开发效率。

weixin_30268921的博客 312

Permutations II:有重复元素的排列

Given a collection of numbers that might contain duplicates, return all possible unique permutations. For example, [1,1,2] have the following unique permutations: [ [1,1,2], [1,2,1], [2,1

小雄鹿的博客 485

Graybox Overview

Graybox功能使能够在sub_module上执行扫描和ATPG操作,然后能够在更高层次的层次上执行扫描和ATPG操作时使用该子模块的简化的Graybox表示,从而简化了分层设计中的扫描插入和ATPG操作过程。由于子模块的graybox表示只包含极少量的互连电路(子模块与top的互连),在大型分层设计中使用graybox可以极大地减少执行扫描插入,优化计时,分析故障和创建测试pattern所需的memory和工具runtime。

weixin_44954910的博客 1081

python cookbook 4.9 排列组合的迭代(排列permutations(),可重复组合combinations_with_replacement,不可重复组合combinations)

#若想遍历一个集合中元素的所有可能的排列或组合 #itertools模块提供了三个函数来解决这类问题。其中一个是itertools.permutations(),它接受一个集合并产生 #一个元组序列,每个元组由集合中所有元素的一个可能排列组成,也就是说通过打乱集合中元素排列顺序生成一个元组 items=['a','b','c'] from itertools import permutation...

别说话写代码的博客 2407

告别信息过载:我是如何用Feedly RSS阅读器打造个人专属信息流的(附Chrome插件使用技巧)

本文分享了如何利用Feedly RSS阅读器有效管理信息过载,打造个人专属信息流的方法。通过科学组织订阅源、智能过滤和跨平台同步技巧,帮助用户从被动接收转为主动筛选,提升信息获取效率。特别推荐使用Feedly的Chrome插件和AI过滤功能,实现高效的信息管理。

weixin_42526015的博客 355

[漏洞挖掘与防护] 03.漏洞利用之WinRAR安全缺陷复现(CVE-2018-20250)及软件自启动分析

上一篇文章将详细介绍MS08-067远程代码执行漏洞(CVE-2008-4250)及防御过程,它是Windows Server服务RPC请求缓冲区溢出漏洞,利用445端口,并通过Metasploit工具获取shell及进行深入的操作。这篇文章将详细讲解WinRAR漏洞(CVE-2018-20250),并复现了该漏洞和讲解了恶意软件自启动劫持原理。基础性文章,希望对入门的同学有帮助。

杨秀璋的专栏 1088

combinations(组合)/permutations(全排列,不包含重复数字)/permutations-ii(全排列-ii,包含重复数字)

题目1:Given two integers n and k, return all possible combinations of k numbers out of 1 … n. For example, If n = 4 and k = 2, a solution is: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,

ldw662523的博客 573

MDF和DHF、DMR、DHR三者差异?注册与备案文件?医疗器械产品技术要求编写指导原则

定义:设计历史文档(DHF ) 指的是描述某医疗器械成品设计过程的有关记录。内容:DHF包括设计开发活动的所有记录。从最初的策划、客户需求、设计输入,设计输出、设计验证、设计确认、所有的设计评审,设计转换,以及设计变更相关的所有记录。均属于DHF的一部分。要求:各制造商应为每个类型的器械建立并保持设计历史文件。设计历史文件应包含或引用必要的记录,以证实设计符合经批准的设计计划和法规的要求。

学海无涯的专栏 9110

permutations python_为什么Python的itertools.permutations包含重复项? (当原始列表重复时)...

为什么Python的itertools.permutations包含重复项? (当原始列表重复时)普遍认为,n个不同符号的列表有n! 排列。 但是,当符号不明确时,在math和其他地方最常见的惯例似乎是只计算不同的排列。 因此,列表[1, 1, 2] 1,1,2 [1, 1, 2]的排列通常被认为是[1, 1, 2], [1, 2, 1], [2, 1, 1] 。 事实上,下面的C ++代码正好...

weixin_36098968的博客 680

开源数字人、虚拟直播部署教程

对,你无看错,是欧美的。在直播带货案例里,我们把模型导入到ue4,我们给模型在ue4里预设了四个动作(站着、站着说话、坐着、坐着说话),三个表情(平静、开发、愤怒),三个镜头(全局、近矩说话、看显示器播放商品展示)。我们只需要把目标主播的直播给录制下来,提取样本数据,然后训练一个从粉丝的不同刺激的组合,到主播的不同响应方式的多元逻辑回归的数学模型参数即可。

南七小僧的学海无涯 4560

机器学习初探——用线性回归预测股价趋势

在进入代码之前,先建立一个大框架。类型一句话解释金融中的应用监督学习给机器“标准答案”让它学预测股价(历史数据→未来价格)无监督学习不给答案,让机器自己找规律把相似股票自动归类、发现异常交易强化学习让机器通过“试错”学习最优策略AI自动交易、量化策略优化我们现阶段只学“监督学习”——这是最常用、最容易上手的。准备一堆“特征”和对应的“标签”(比如:历史的第N天 → 那天的价格)喂给机器一个“算法”(比如线性回归)机器“拟合”出一个规律(比如找到一条最合适的直线)

109

[leetcode] 47. Permutations II @ python

原题 Given a collection of numbers that might contain duplicates, return all possible unique permutations. Example: Input: [1,1,2] Output: [ [1,1,2], [1,2,1], [2,1,1] ] 解法1 使用itertools.permutations返回排列组...

闲庭信步 227

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

python permutations全排列函数

permutations全排列函数

leechying的博客 1475

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

python itertools.permutations函数——全排列 函数使用 优化及算法实现思路 150帧gif教程让你看到爽

让你能够轻松学会全排列。

lishuaigell的博客 1万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

permutations python_为什么Python的和itertools.permutations包含重复? (当原来的列表中有重复)...

It is universally agreed that a list of n distinct symbols has n! permutations. However, when the symbols are not distinct, the most common convention, in mathematics and elsewhere, seems to be to cou...

weixin_33016355的博客 391

python 全排列combinations和permutations函数

结果为: 显然,combinations方法重点在组合,permutations方法重在排列。 还有就是,combinations和permutations返回的是对象地址,原因是在python3里面,返回值已经不再是list,而是iterators(迭代器), 所以想要使用,只用将iterator 转换成list 即可, 还有其他一些函数返回的也是一个对象,需要list转换,比如 l

mishi_zcf的博客 7万+

python数字排列组合去重_python解决排列组合问题的4种方式

前言排列组合问题在是算法中很基础的一个问题,它们的区别就是,排列要考虑顺序,组合不考虑顺序。在面试的过程中可能会考到,在现实生活中也是经常可以遇到的,比如说一个3位数字的密码锁,要尝试多少次才能解开?那么用python有哪些方法可以解决此类问题呢?问题以一个具体的例子来说明在python中此类问题的可能解决方法,要求给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输...

weixin_35715629的博客 2646

LeetCode—permutations-ii(有重复数字的排列)—java

题目描述:Given a collection of numbers that might contain duplicates, return all possible unique permutations.For example,[1,1,2]have the following unique permutations:[1,1,2],[1,2,1], and[2,1,1].思路解析:这个题...

Lynn_Baby的博客 592

全排列(去除重复)Permutations II

为什么80%的码农都做不了架构师?>>> ...

weixin_34245169的博客 764

Permutations II 字符全排列 去除重复的

Permutations II   Given a collection of numbers that might contain duplicates, return all possible unique permutations. For example, [1,1,2] have the following unique permutations: [1,1,2],

小人物的草稿本 744

leetcode-47. Permutations II(重复元素全排列)

https://leetcode.com/problems/permutations-ii/#/description问题描述: 含有重复元素的全排列思路解析: 参考http://blog.youkuaiyun.com/u013275928/article/details/72510351 这次考虑了重复元素,新增了一个用来表示该元素是否已经加入到了tempList中的boolean数组,若为真则已经存在

u013275928的专栏 346

python花式编码_Python编码常用套路

1. 循环遍历if __name__ == '__main__':while True:2. 录入数据str1=raw_input()#通过split()将数据分割,并用map(int,list)将其存储n,k=map(int,str1.split())str2=raw_input()#分割后利用map将全部数据进行转换listA=map(int,str2.split())3. list的去重#因...

weixin_39747595的博客 482

leetcode 47. Permutations II 全排列问题(去掉重复元素)+递归

Given a collection of numbers that might contain duplicates, return all possible unique permutations.For example, [1,1,2] have the following unique permutations: [ [1,1,2], [1,2,1], [2,1,1]

JackZhangNJU的专栏 719

python去重的方法_Python常用的几种去重方法

一、对列表去重case1:用集合的特性set(),去重后顺序会改变a = ['1', '2', 'x', '5', 'x']print(set(a)) ---{'x', '5', '1', '2'}case1.1:可以通过列表中索引(index)的方法保证去重后的顺序不变a = [1,4,4,2,3,4,5,6,1]b = list(set(a))b.sort(key=a.index)pr...

weixin_39819974的博客 840

[LeetCode]Permutations(回溯&&DFS&&递归!!!!)

题目意思很直白,求出不重复的所有排列,这里的是数字,对于字符串同样适用。 思路一:递归,每次都按照nums的顺序访问并且加入当前的vector,再递归的下一层。如果当前层的vector的大小==nums的大小,则是一个合理的排列。否则,按顺序遍历nums的每一个元素,如果该元素没有被加入vector则加入继续递归。所以这里需要有个标记是否访问过的visted数组,加入vector时设为true表示

周大侠的专栏 1346

java guava使用之Collections2

package com.xasmall.guava;import java.util.Collection; import java.util.Collections; import java.util.List;import com.google.common.base.Function; import com.google.common.base.Predicate; import com.go

lxasmall_white的博客 2835
上一篇: 逆波兰表达式转换 RPN infix
下一篇: Text Justification 文本对齐 @LeetCode
chiiis
博客等级 码龄14年 422粉丝 429原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值