微信小程序项目模板文件
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

94 lines
2.0KB

  1. // pages/home/home.js
  2. Page({
  3. /**
  4. * 页面的初始数据
  5. */
  6. data: {
  7. },
  8. /**
  9. * 生命周期函数--监听页面加载
  10. */
  11. onLoad: function (options) {
  12. },
  13. /**
  14. * 生命周期函数--监听页面初次渲染完成
  15. */
  16. onReady: function () {
  17. },
  18. /**
  19. * 生命周期函数--监听页面显示
  20. */
  21. onShow: function () {
  22. let arr = [1, 2, 3, 4, 5]
  23. let k = 4, x = 3
  24. /** *
  25. * @param {number[]} arr
  26. * @param {number} k
  27. * @param {number} x
  28. * @return {number[]}
  29. * */
  30. var findClosestElements = function(arr, k, x) {
  31. var getCloseIndex = function(left,right){
  32. if(left>=right) return left;
  33. let mid=(left+right)>>1;
  34. let result
  35. if(arr[mid]>=x){
  36. result=getCloseIndex(left,mid-1)
  37. }else{
  38. result=getCloseIndex(mid+1,right)
  39. }
  40. return result
  41. }
  42. const len=arr.length;
  43. let right=getCloseIndex(0,len-1);
  44. let left=0;
  45. if(right>0&&arr[right]>x) right--;
  46. if(right+1>=k) left=right+1-k; else right+=(k-(right+1));
  47. while(right<len-1&&((x-arr[left])>(arr[right+1]-x))){ left++; right++; } return arr.slice(left,right+1);
  48. }
  49. const res = findClosestElements(arr, k, x)
  50. console.log(res);
  51. },
  52. /**
  53. * 生命周期函数--监听页面隐藏
  54. */
  55. onHide: function () {
  56. },
  57. /**
  58. * 生命周期函数--监听页面卸载
  59. */
  60. onUnload: function () {
  61. },
  62. /**
  63. * 页面相关事件处理函数--监听用户下拉动作
  64. */
  65. onPullDownRefresh: function () {
  66. },
  67. /**
  68. * 页面上拉触底事件的处理函数
  69. */
  70. onReachBottom: function () {
  71. },
  72. /**
  73. * 用户点击右上角分享
  74. */
  75. onShareAppMessage: function () {
  76. }
  77. })