94 lines
2.0 KiB
JavaScript
94 lines
2.0 KiB
JavaScript
// pages/home/home.js
|
|
Page({
|
|
|
|
/**
|
|
* 页面的初始数据
|
|
*/
|
|
data: {
|
|
|
|
},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面加载
|
|
*/
|
|
onLoad: function (options) {
|
|
|
|
},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面初次渲染完成
|
|
*/
|
|
onReady: function () {
|
|
|
|
},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面显示
|
|
*/
|
|
onShow: function () {
|
|
let arr = [1, 2, 3, 4, 5]
|
|
let k = 4, x = 3
|
|
/** *
|
|
* @param {number[]} arr
|
|
* @param {number} k
|
|
* @param {number} x
|
|
* @return {number[]}
|
|
* */
|
|
var findClosestElements = function(arr, k, x) {
|
|
var getCloseIndex = function(left,right){
|
|
if(left>=right) return left;
|
|
let mid=(left+right)>>1;
|
|
let result
|
|
if(arr[mid]>=x){
|
|
result=getCloseIndex(left,mid-1)
|
|
}else{
|
|
result=getCloseIndex(mid+1,right)
|
|
}
|
|
return result
|
|
}
|
|
const len=arr.length;
|
|
let right=getCloseIndex(0,len-1);
|
|
let left=0;
|
|
if(right>0&&arr[right]>x) right--;
|
|
if(right+1>=k) left=right+1-k; else right+=(k-(right+1));
|
|
while(right<len-1&&((x-arr[left])>(arr[right+1]-x))){ left++; right++; } return arr.slice(left,right+1);
|
|
}
|
|
const res = findClosestElements(arr, k, x)
|
|
console.log(res);
|
|
},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面隐藏
|
|
*/
|
|
onHide: function () {
|
|
|
|
},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面卸载
|
|
*/
|
|
onUnload: function () {
|
|
|
|
},
|
|
|
|
/**
|
|
* 页面相关事件处理函数--监听用户下拉动作
|
|
*/
|
|
onPullDownRefresh: function () {
|
|
|
|
},
|
|
|
|
/**
|
|
* 页面上拉触底事件的处理函数
|
|
*/
|
|
onReachBottom: function () {
|
|
|
|
},
|
|
|
|
/**
|
|
* 用户点击右上角分享
|
|
*/
|
|
onShareAppMessage: function () {
|
|
|
|
}
|
|
}) |