一串数字的和 = 平均值 * 数字个数

和为S的连续正数序列

http://www.nowcoder.com/questionTerminal/c451a3fd84b64cb19485dad758a55ebe

一串数字的和 = 平均值 * 数字个数;
连续数字的平均值分为两种情况:

  1. 奇数个数字:中位数、(整数)
  2. 偶数个数字:中间两个数的平均 (xx.5)

所以我们要找的就是:符合条件的平均值和数字个数:

  1. 平均值为整数,数字个数必定为奇数
  2. 平均值为xx.5, 数字个数必定为偶数

假设刚开始有i(0~sum)个数字,所以平均值为: sum/i,找到符合条件的,然后根据平均值和数字个数生成一串数字就好了

JavaScript:

function FindContinuousSequence(sum)
{
  const res = []
  for(let i=2; i<sum; i++){
    const mid = sum/i; // mid为结果中间的数字,i是一共有几个数字
    if(mid - i/2 <= 0) break;  // 开头的数字小于0,就不对了
    // mid为整数的时候i必须是奇数,mid为.5的时候,i必须是偶数
    if((mid%1 === 0 && i%2 === 1) || (mid%1 === 0.5 && i%2 === 0)){
      res.unshift(createNums(mid, i))
    }
  }
  return res
}

function createNums(mid, count){
  let arr = [];
  let i=0;
  if(count%2 === 1){
    i=1;
    arr.push(mid)
  }else{
    i=0.5
  }
  for(; i< Math.ceil(count/2); i++){
    arr.push(mid+i)
    arr.unshift(mid-i)
  }
  return arr
}
全部评论
我也是这个思路做的,python,从ide上测试可以,到OJ上输入s=4的时候,返回值为[[0, 1]],好奇怪啊
点赞 回复 分享
发布于 2020-04-21 22:01

相关推荐

已经入职数字马力4个月了,忍不住想和大家聊聊最真实的感受!🔥1️⃣&nbsp;岗位偏见?作为蚂蚁的子公司,很多人会担心“内包”身份会不会有岗位偏见。就我这几个月的体验来说,数字马力一直在快速扩招,面试流程也越来越规范(尤其是校招环节)。至于偏见问题,真的看部门和leader,很幸运我遇到的师兄和主管都特别nice,团队氛围很融洽。2️⃣&nbsp;待遇怎么样?试用期工资不打折!这点我真的吹爆💥!每天六点下班还有餐补,公积金按全额8%交(感动哭)……不过养老金也是实打实的8%,到手稍微心疼一下下😂3️⃣&nbsp;技术栈跟得上吗?技术栈多到学不完……而且我们有权限访问蚂蚁的知识库,自学能力强+愿意钻研的话,成长速度真的飞快!(当然,像我这种偶尔偷懒的也在慢慢进步中😝)4️⃣&nbsp;面试流程?一般是三面:两轮技术面(可能有线上笔试)+&nbsp;一轮HR面(含背调)。整体节奏比较顺畅,反馈也及时。5️⃣&nbsp;未来发展怎么看?老实说,数字马力不算头部大厂,不能指望它给简历镀金,但也绝不是那种会“减分”的外包。我更愿意把它看作一个扎实的中厂跳板,适合积累实战经验。6️⃣&nbsp;怎么投递?通过数字马力gzh,今天刚放出一批新HC!如果你正在看机会,不妨试试数字马力~之前面挂过也没关系,不妨再战一次,机会说不定就来了!🤝✅&nbsp;我的专属内推码:NTA6Nvs,可以直接帮大家推进流程。📮&nbsp;有任何关于公司、岗位、面试的问题,也欢迎留言,我会尽量回复~(小声说:大环境不易,希望大家都能找到心仪的工作,也欢迎来找我内推呀!)
数字马力公司福利 22人发布
点赞 评论 收藏
分享
11-11 16:40
已编辑
门头沟学院 人工智能
不知道怎么取名字_:这个有点不合理了,相当于已经毕业了,但还是没转正,这不就是白嫖
点赞 评论 收藏
分享
评论
5
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务