网易首页 > 网易号 > 正文 申请入驻

2023-12-30:用go语言,给你一个下标从 0 开始的整数数组 nums

0
分享至

2023-12-30:用go语言,给你一个下标从 0 开始的整数数组 nums ,它包含 n 个 互不相同 的正整数,

如果 nums 的一个排列满足以下条件,我们称它是一个特别的排列。

对于 0 <= i < n - 1 的下标 i:

要么 nums[i] % nums[i+1] == 0,

要么 nums[i+1] % nums[i] == 0。

请你返回特别排列的总数目,由于答案可能很大,请将它对 1000000007 取余 后返回。

输入:nums = [2,3,6]。

输出:2。

来自力扣2741. 特别的排列。

答案2023-12-30:

来自左程云。

灵捷3.5

大体步骤如下:

1.在main函数中,我们调用了specialPerm函数,并传入nums数组。在这个函数内部,首先计算了nums数组的长度n,然后初始化了一个二维数组dp,用于记录状态的转移。

2.specialPerm函数返回调用process函数的结果,传入了nums、n、0、0和dp作为参数。

3.process函数用于计算满足特殊条件的排列总数。首先,它检查dp数组中是否已经计算了当前状态s和位置p的结果,如果是,则直接返回该结果。

4.接下来,如果状态s表示所有的数字都被使用过,那么将结果设为1,表示找到了一个满足条件的排列。

5.否则,对于给定位置p,遍历每个数字i,如果当前状态s中没有包含数字i,且a[p]能整除a[i]或者a[i]能整除a[p],则递归调用process函数,并将结果加到ans上。

6.最后,将得到的ans存入dp数组中,并返回结果。

整体的时间复杂度:O(n*2^n),其中n是nums数组的长度。对于process函数中的每个状态s以及位置p,最坏情况下都要回溯所有的n个数字,因此是指数级的复杂度。

额外空间复杂度:O(2^n * n),其中dp数组占据了主要的空间,它是一个大小为2^n * n的二维数组。

go完整代码如下:

packagemain
import"fmt"
varmod=1000000007
funcspecialPerm(nums[]int)int{
n:=len(nums)
dp:=make([][]int,1<fori:=rangedp{
dp[i]=make([]int,n)
forj:=rangedp[i]{
dp[i][j]=-1
}
}
returnprocess(nums,n,0,0,dp)
}
funcprocess(a[]int,n,s,pint,dp[][]int)int{
ifdp[s][p]!=-1{
returndp[s][p]
}
varansint
ifs==(1<ans=1
}else{
fori:=0;iifs==0||(s&(1<ans=(ans+process(a,n,s|(1<}
}
}
dp[s][p]=ans
returnans
}
funcmain(){
nums:=[]int{2,3,6}
result:=specialPerm(nums)
fmt.Println("Result:",result)
}



rust完整代码如下:

fnspecial_perm(nums:Vec)->i32{
letn=nums.len();
letmod_num=1000000007;
letmutdp=vec![vec![-1;n];1<process(&nums,n,0,0,&mutdp,mod_num)
}
fnprocess(a:&Vec,n:usize,s:usize,p:usize,dp:&mutVec>,mod_num:i32)->i32{
ifdp[s][p]!=-1{
returndp[s][p];
}
letans:i32;
ifs==(1<ans=1;
}else{
ans=(0..n).fold(0,|accum,i|{
ifs==0||(s&(1<(accum+process(a,n,s|(1<}else{
accum
}
});
}
dp[s][p]=ans;
ans
}
fnmain(){
letnums=vec![2,3,6];
letresult=special_perm(nums);
println!("Result:{}",result);
}



c++完整代码如下:

#include
#include
#include
usingnamespacestd;
constintmod=1000000007;
intprocess(constvector&a,intn,ints,intp,unordered_map>&dp){
if(dp.count(s)&&dp[s].count(p)!=0){
returndp[s][p];
}
intans=0;
if(s==(1<ans=1;
}
else{
for(inti=0;iif(s==0||(s&(1<ans=(ans+process(a,n,s|(1<}
}
}
dp[s][p]=ans;
returnans;
}
intspecialPerm(constvector&nums){
intn=nums.size();
unordered_map>dp;
returnprocess(nums,n,0,0,dp);
}
intmain(){
vectornums={2,3,6};
intresult=specialPerm(nums);
cout<<"Result:"<return0;
}



c完整代码如下:

#include
#include
#defineMOD1000000007
intprocess(int*a,intn,ints,intp,int**dp);
intspecialPerm(int*nums,intnumsSize){
intn=numsSize;
int**dp=(int**)malloc((1<for(inti=0;i<(1<dp[i]=(int*)malloc(n*sizeof(int));
for(intj=0;jdp[i][j]=-1;
}
}
returnprocess(nums,n,0,0,dp);
}
intprocess(int*a,intn,ints,intp,int**dp){
if(dp[s][p]!=-1){
returndp[s][p];
}
intans=0;
if(s==(1<ans=1;
}
else{
for(inti=0;iif(s==0||((s&(1<ans=(ans+process(a,n,s|(1<}
}
}
dp[s][p]=ans;
returnans;
}
intmain(){
intnums[]={2,3,6};
intresult=specialPerm(nums,sizeof(nums)/sizeof(nums[0]));
printf("Result:%d\n",result);
return0;
}



声明:个人原创,仅供参考

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
合芯科技拖欠工资,员工:揭不开锅了

合芯科技拖欠工资,员工:揭不开锅了

闲醉山人
2024-06-15 23:19:54
张兰汪小菲放心了,大S决定放下把矛头转向别人,具俊晔让人担忧

张兰汪小菲放心了,大S决定放下把矛头转向别人,具俊晔让人担忧

娱记掌门
2024-06-16 09:55:15
太快了!国产车又出事了!网友拍到新能源车起火瞬间

太快了!国产车又出事了!网友拍到新能源车起火瞬间

看看娱乐与体育
2024-06-14 02:45:17
足协酝酿超级罚单!3家俱乐部扣分或降级 会有泰山队吗?

足协酝酿超级罚单!3家俱乐部扣分或降级 会有泰山队吗?

球事百科吖
2024-06-15 18:10:08
河南一瓜农卖瓜无人问津心态瞬间崩溃,当地西瓜批发价跌破三毛

河南一瓜农卖瓜无人问津心态瞬间崩溃,当地西瓜批发价跌破三毛

映射生活的身影
2024-06-13 15:02:32
严管!6月17日起!天津全市执行!

严管!6月17日起!天津全市执行!

天津族
2024-06-16 07:35:48
武统、和统都没希望了?台湾军事专家:中国大陆已经找到第三条路

武统、和统都没希望了?台湾军事专家:中国大陆已经找到第三条路

番茄说史聊
2024-06-15 22:34:58
神秘的换妻游戏,背后组织者身份曝光真相令人心痛不已

神秘的换妻游戏,背后组织者身份曝光真相令人心痛不已

小鱼滑
2024-04-20 02:05:06
江西人妻出轨门震惊全网!不雅行为曝光:2个人的床上,睡着5个人

江西人妻出轨门震惊全网!不雅行为曝光:2个人的床上,睡着5个人

揉碎夏的诗
2024-06-03 14:10:02
4年2.21亿,再见快船!荣誉不要了,只要钱,哈登成了最大输家

4年2.21亿,再见快船!荣誉不要了,只要钱,哈登成了最大输家

祝晓塬
2024-06-16 03:56:47
上港国脚因伤退出国家队 回中超踢满全场被质疑诈伤

上港国脚因伤退出国家队 回中超踢满全场被质疑诈伤

球事百科吖
2024-06-15 14:43:22
笑喷!朱芳雨建议杨鸣竞聘中国男篮主帅 后者:在线就给你辟谣

笑喷!朱芳雨建议杨鸣竞聘中国男篮主帅 后者:在线就给你辟谣

醉卧浮生
2024-06-15 12:42:06
顶住美压力,无视日本3次请求!坚决要将5000亿高铁大单交给中国

顶住美压力,无视日本3次请求!坚决要将5000亿高铁大单交给中国

星辰故事屋
2024-06-15 13:12:49
同进全球数学竞赛决赛的博士生曝比赛细节,赞“姜萍厉害”

同进全球数学竞赛决赛的博士生曝比赛细节,赞“姜萍厉害”

澎湃新闻
2024-06-14 18:46:28
突发!阿根廷首都爆发激烈冲突

突发!阿根廷首都爆发激烈冲突

鲁中晨报
2024-06-13 17:59:04
他刚当市长就被老百姓指责,后来官至政治局常委,如今已经86岁了

他刚当市长就被老百姓指责,后来官至政治局常委,如今已经86岁了

李姐历史
2024-06-14 09:57:42
受欧盟关税影响,Stellantis拟将部分电动车生产迁出中国

受欧盟关税影响,Stellantis拟将部分电动车生产迁出中国

观察者网
2024-06-15 17:14:11
粟裕先斩后奏,毛主席不但没责怪,反而说道:粟裕解决了我的心病

粟裕先斩后奏,毛主席不但没责怪,反而说道:粟裕解决了我的心病

祥瑞
2024-06-16 09:32:25
我在尼泊尔卖手机,经客户做媒,花15000元娶小17岁美女,赚大了

我在尼泊尔卖手机,经客户做媒,花15000元娶小17岁美女,赚大了

真实人物采访
2024-06-14 06:15:02
张常宁超神!狂轰4分球球关键,蔡斌脸色难看,这么强不早用她?

张常宁超神!狂轰4分球球关键,蔡斌脸色难看,这么强不早用她?

嘴炮体坛
2024-06-15 22:04:24
2024-06-16 10:44:49
moonfdd
moonfdd
福大大架构师每日一题
423文章数 7关注度
往期回顾 全部

科技要闻

iPhone 16会杀死大模型APP吗?

头条要闻

40余套房屋涉嫌"一房多卖" 有购房者内心积郁因病去世

头条要闻

40余套房屋涉嫌"一房多卖" 有购房者内心积郁因病去世

体育要闻

没人永远年轻 但青春如此无敌还是离谱了些

娱乐要闻

江宏杰秀儿女刺青,不怕刺激福原爱?

财经要闻

打断妻子多根肋骨 上市公司创始人被公诉

汽车要闻

东风奕派eπ008售21.66万元 冰箱彩电都配齐

态度原创

时尚
本地
健康
亲子
军事航空

中年女性还是穿连衣裙最有气质!裙摆过膝、腰部收紧,巨显瘦

本地新闻

粽情一夏|海河龙舟赛,竟然成了外国人的大party!

晚餐不吃or吃七分饱,哪种更减肥?

亲子要闻

家庭教育争议:青春期孩子该如何管教?

军事要闻

普京提停火和谈条件 美防长迅速回应

无障碍浏览 进入关怀版