【leetcode】1282.用户分组

在这里插入图片描述
问题解析:首先是数组groupSizes[I],它所代表的是,第i个人所在组的大小。
解题思路:以此找1,2,3,4,。。。的数值,并按照数值大小归为一组。
1、从小到大找出每个组,比如说,先找大小为1的组的成员,就是找出groupSizes数组中值为1的索引,然后找出2的,3的,4.。。
2、把找出的索引按照组的大小分别分组。

for(var i=0;i<pos.length;i+=index){
    result.push(pos.slice(i,i+index));
}

利用slice函数分组。该方法,按照索引切分数组。
3、保存数组。
4、迭代。

<script>
/**
* @param {number[]} groupSizes
* @return {number[][]}
*/
var groupSizes = [3,3,3,3,3,1,3];



var groupThePeople = function(groupSizes) {

var index=1;    //每一次找的所在组的大小

var sum = 0;    //用来存放已经分组掉几个数字

var result = [];    //用来存放结果数组

var pos = []; //用来存储,每一个组大小所存在的人的索引

var co = [...groupSizes];    //rest参数复制数组,不是指针

function getAll(co,value){    //该函数的作用是找出数组中某个值的所有索引,indexOf只能找出第一个索引

var re = [];

var index=0;

index=groupSizes.indexOf(value);
co[index]=-1;
while(index!=-1){
re.push(index);
index=co.indexOf(value);
co[index]=-1;
}
return re;

}
while(sum<groupSizes.length){
pos = getAll(groupSizes,index);

sum +=pos.length;

for(var i=0;i<pos.length;i+=index){

result.push(pos.slice(i,i+index));
}
index+=1;
}
return result;

};
var result = groupThePeople(groupSizes);

console.log(result);
</script>

数组的at方法,和indexOf方法。
At方法指的是,在某个索引位置的值大小。
indexOf按照值的大小找索引。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值