求数组里面拼接出的最小值

  输入一个正整数数组,把数组里的所有数字拼接

起来排成一个数,输出 能拼接出的 所有数字中

最小的一个比如:[3,32,321];

            let a=[3,32,321];//原数组
			let b1=[];//存拼接结果集
			let a1=0;//拼接结果
			let b2=0;//数组下标工具
			let [a2,a3,a4]=[0,0,0];
			for(let i=0;i<1000;i++){
				a2=parseInt(Math.random()*3);
				a3=parseInt(Math.random()*3);
				a4=parseInt(Math.random()*3);
					if(a2!==a3&&a3!==a4&&a2!==a4){
					a1=parseInt(`${a[a2]}${a[a3]}${a[a4]}`);
             //动态拼接结果
				    }
				if(a1!==0){
					b1[b2]=a1;
					b2++;
					}
				}
			console.log(b1);//写一个数组存拼接结果,但是重复的太多
			b2=0;
			let b3=[];//重新写一个数组存不重复的数据
		    for(let i=0;i<b1.length;i++){
				if (b3.indexOf(b1[i]) == -1){
					b3.push(b1[i]);
				} 
			}//b3.indexOf(b1[i]) == -1判断数组中是否存在元素
			console.log(b3);
			alert(Math.min.apply(Math,b3));
			//输出数组最小值Math.min.apply(Math,arr);函数

上面是固定数组的

接下来是魔改动态的

            let [a2,a3,a4]=[parseInt(Math.random()*300),
			parseInt(Math.random()*3000),parseInt(Math.random()*3000)];
			let a=[a2,a3,a4];//随机数组
			console.log(a);
			let b1=[];
			let a1=0;
			let b2=0;
			for(let i=0;i<1000;i++){
				a2=parseInt(Math.random()*3);
				a3=parseInt(Math.random()*3);
				a4=parseInt(Math.random()*3);
					if(a2!==a3&&a3!==a4&&a2!==a4){
					a1=parseInt(`${a[a2]}${a[a3]}${a[a4]}`);
				    }
				if(a1!==0){
					b1[b2]=a1;
					b2++;
					}
				}
			console.log(b1);//写一个数组存拼接结果,但是重复的太多
			let b3=[];//重新写一个数组存不重复的数据
		    for(let i=0;i<b1.length;i++){
				if (b3.indexOf(b1[i]) == -1){
					b3.push(b1[i]);
				} 
			}
			console.log(b3);
			alert(Math.min.apply(Math,b3));
			// //输出数组最小值Math.min.apply(Math,arr);函数
			

注释主要在上面那个里面

菜鸡一个

各位大佬不喜勿喷。。。。。。

继续魔改。。。。

            let len=prompt("数组要多长?")
			let b=0;
			let a=[];
			for(let i=0;i<len;i++){
				b=parseInt(Math.random()*1000);
				a[i]=b;
			}
			// let [a2,a3,a4]=[parseInt(Math.random()*300),
			// parseInt(Math.random()*3000),parseInt(Math.random()*3000)];
			// let a=[a2,a3,a4];
			console.log(a);
			let b1=[];
			let a1=0;
			let b2=0;
			let arr=[];
			for(let i=0;i<len;i++){
				arr[i]=i;
			}
			for(let k=0;k<1000;k++){
				function shuffle(arr) {
				  var length = arr.length,
				    randomIndex,
				    temp;
				  while (length) {
				    randomIndex = Math.floor(Math.random() * (length--));
				    temp = arr[randomIndex];
				    arr[randomIndex] = arr[length];
				    arr[length] = temp
				  }
				  return arr;
				}
				console.log(shuffle(arr))
				b="";
				for(let i=0;i<1;i++){
					for(let j=0;j<a.length;j++){
						b+=a[arr[j]];
					}		
					a1=parseInt(b);
					b1[b2]=a1;
					b2++;
				}
			}
			console.log(b1);//写一个数组存拼接结果,但是重复的太多
			let b3=[];//重新写一个数组存不重复的数据
		    for(let i=0;i<b1.length;i++){
				if (b3.indexOf(b1[i]) == -1){
					b3.push(b1[i]);
				} 
			}
			console.log(b3);
			alert(Math.min.apply(Math,b3));
			//输出数组最小值Math.min.apply(Math,arr);函数

借鉴了大佬的打乱数组排序

做下标

https://blog.csdn.net/weixin_33949359/article/details/92061701

再次感谢。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值