美文网首页
算法题目6:挑选标语

算法题目6:挑选标语

作者: 玲儿珑 | 来源:发表于2020-06-11 23:11 被阅读0次

    题目:某市马上要举办运动会了,组委会决定通过网络征集的方式来决定大会标语。有m条标语参加评 选,共有n人参与投票,每人投一票,规定采用得票超过 n/k 的标语(假设只有一条标语满足要 求)。请你写一个程序帮助小安挑出胜出的标语的序号。
    输入:
    一共 n+1 个整数,用空格分隔。第一个整数是 k,第二个整数开始每个数代表每个投票上选择的 标语的序号(大于 0 小于 2147483647 的整数)。
    输出:
    会被采用的标语的序号。
    样例输入:
    3122
    样例输出:
    2
    提示:
    暴力 O(mn)的方法会视为错误

    实现:

    function select (n) {
      let k = 3
      let arr = [1, 2, 2, 3, 5]
      // for (let i = 0; i < n; i++) {
      //   arr.push(Math.floor(Math.random()*10))
      // }
    
      let obj = {}
      for (let i = 0; i < arr.length; i++) {
        if ( obj[arr[i]] ) {
          obj[arr[i]]++
        } else {
          obj[arr[i]] = 1
        }
      }
    
      let arr_r = []
      let d = Math.ceil(n/k)
      for (const k in obj) {
        if ( obj[k] >= d ) {
          arr_r.push(k)
        }
      }
    
      return arr_r
    }
    select (5)
    

    相关文章

      网友评论

          本文标题:算法题目6:挑选标语

          本文链接:https://www.haomeiwen.com/subject/yncwtktx.html