首页 > 编程语言 >程序员面试金典---18

程序员面试金典---18

时间:2023-04-29 21:55:05浏览次数:43  
标签:function return nums 18 number --- num 金典 prototype

数字流的秩

代码:

var StreamRank = function() {
    this.arr = []
};

/** 
 * @param {number} x
 * @return {void}
 */
StreamRank.prototype.track = function(x) {
    this.arr.push(x)
};

/** 
 * @param {number} x
 * @return {number}
 */
StreamRank.prototype.getRankOfNumber = function(x) {
    let cnt = 0
    for(let item of this.arr){
        if(item <= x){
            cnt++
        }
    }
    return cnt
};

/**
 * Your StreamRank object will be instantiated and called as such:
 * var obj = new StreamRank()
 * obj.track(x)
 * var param_2 = obj.getRankOfNumber(x)
 */

优化:树状数组

function Bit (size) {
    // 定义树状数组
    this.tree = new Array(size + 1).fill(0)
};

Bit.prototype.lowbit = function (x) {
    // 按位与
    return x & -x
}

Bit.prototype.add = function (index, num) {
    while (index && index < this.tree.length) {
        this.tree[index] += num
        index += this.lowbit(index)
    }
}

Bit.prototype.query = function (num) {
    let ans = 0
    while (num) {
        ans += this.tree[num]
        num -= this.lowbit(num)
    }
    return ans
}

var StreamRank = function() {
    this.bit = new Bit(50001)
};

/** 
 * @param {number} x
 * @return {void}
 */
StreamRank.prototype.track = function(x) {
    this.bit.add(x + 1, 1)
};

/** 
 * @param {number} x
 * @return {number}
 */
StreamRank.prototype.getRankOfNumber = function(x) {
    return this.bit.query(x + 1)
};

峰与谷

思路:排序后错位交叉

/**
 * @param {number[]} nums
 * @return {void} Do not return anything, modify nums in-place instead.
 */
var wiggleSort = function(nums) {
  // 排序
  nums.sort((a, b) => a - b);
  console.log(nums)
  const ans = [...nums];
  let i = 0, left = 0, right = nums.length - 1, flag = 1;
  // 交叉排序
  while (i < nums.length) {
    nums[i++] = ans[flag++ % 2 === 0 ? left++ : right--];
    console.log(nums)
  }
};
/*
nums = [3,5,2,1,6,4]
[ 1, 2, 3, 4, 5, 6 ]
[ 6, 2, 3, 4, 5, 6 ]
[ 6, 1, 3, 4, 5, 6 ]
[ 6, 1, 5, 4, 5, 6 ]
[ 6, 1, 5, 2, 5, 6 ]
[ 6, 1, 5, 2, 4, 6 ]
[ 6, 1, 5, 2, 4, 3 ]
*/

标签:function,return,nums,18,number,---,num,金典,prototype
From: https://www.cnblogs.com/dgqp/p/17364545.html

相关文章

  • MFC-GetExtendedStyle获取扩展样式
     DWORDExStyles=mylist4.GetExtendedStyle();//获取扩展样式DWORDoldstyle=mylist4.SetExtendedStyle(ExStyles|LVS_EX_FULLROWSELECT);//设置扩展样式/*指定的扩展样式LVS_EX_GRIDLINES//绘制表格LVS_EX_SUBITEMIMAGES//......
  • SpringBoot读取.yml配置文件最常见的两种方式-源码及其在nacos的应用
    三、第二种方式(推荐)这种方式是小编比较推荐的,虽然看似比​​@Value​​麻烦不少,但是更加的规范,在配合nacos的时候也可以动态的修改,会立即生效,一会小编带大家试一下哈!!为什么推荐这种方式呢,是因为spring他们都是使用这种方式进行配置的,所以跟着官方走不会有错的!!1.修改yml文件我们......
  • 在VMWare上安装群晖DS918+ 7.0系统
    多图预警首先要下载引导文件、系统文件以及相关工具https://cowtransfer.com/s/8925a225faa940点击链接查看[DS918+7.0],或访问奶牛快传cowtransfer.com输入传输口令xinjil查看;引导文件转换引导文件为了在虚拟机中使用群晖的引导,第一步要做的就是转换文件格式,VMWa......
  • 【230429-4】求所有仅由1,2,3,4,5组成的没有重复数字的四位数的和
    【数学解法】由1,2,3,4,5组成的没有重复数字的四位数有A54=120个以千位为例,在此出现的1,2,3,4,5的几率是均等的,即每个数都出现了120/5=24次。也就是说,120个数的千位加起来是(1*24+2*24+3*24+4*24+5*24)*1000=15*24*1000同样的道理,120个数的百位加起来是(1*24+2*24+3*24+4*24+5*24)*100=15*2......
  • C语言函数大全-- s 开头的函数(3)
    C语言函数大全本篇介绍C语言函数大全--s开头的函数(3)1.sleep1.1函数说明函数声明函数功能unsignedintsleep(unsignedintseconds);它是C语言标准库中的函数,用于使当前进程挂起一定的时间。在挂起期间,操作系统会将该进程从调度队列中移除,直到指定的时间过去为......
  • Java学习2——第四-六次题目集的分析与总结
     一.前言 本次Blog是对java学习中第二阶段练习的一个总结,作为刚学习JAVA的小白,以下依旧只是本人作为普通学生,以当前能力和状态所做出的总结和分析,不足之处也欢迎各位大佬的指正! 这次的三个题目集,题量除了题目集六很少外,其它都是正常数量,当然题目集六的题也是最难的。总体难......
  • vue3源码-一、响应式原理reactive的实现
    reactive的实现使用:使用reactive()函数创建一个响应式对象。import{reactive}from'vue'exportdefault{//`setup`是一个专门用于组合式API的特殊钩子函数setup(){conststate=reactive({count:0})//暴露state到模板return{......
  • 2023-04-29:一个序列的 宽度 定义为该序列中最大元素和最小元素的差值。 给你一个整数
    2023-04-29:一个序列的宽度定义为该序列中最大元素和最小元素的差值。给你一个整数数组nums,返回nums的所有非空子序列的宽度之和由于答案可能非常大,请返回对109+7取余后的结果。子序列定义为从一个数组里删除一些(或者不删除)元素,但不改变剩下元素的顺序得到的数组......
  • 【愚公系列】2023年04月 .NET CORE工具案例-YARP反向代理
    (文章目录)前言1.YARP是什么YARP(YetAnotherReverseProxy)是一个轻量级的.NET反向代理。它支持HTTP和HTTPS协议,可以将请求转发到其他服务器上。YARP可以用于许多用途,包括加载平衡、内部网络隔离、隐藏内部服务器的IP地址等。它支持使用规则来转发请求,并且可以在......
  • 音视频八股文(9)-- flv的h264六层结构和aac六层结构
    flv介绍FLV(FlashVideo)是Adobe公司推出的⼀种流媒体格式,由于其封装后的⾳视频⽂件体积⼩、封装简单等特点,⾮常适合于互联⽹上使⽤。⽬前主流的视频⽹站基本都⽀持FLV。采⽤FLV格式封装的⽂件后缀为.flv。FLV封装格式是由⼀个⽂件头(fileheader)和⽂件体(fileBody)组成。其中,FL......