人生戏

文章 评论 浏览 30

人生戏 2022-05-04 13:57:52

parseInt('11', "4") 这个为啥等于5呢,他4进制,11应该也不在其范围内么,怎么会得出的结果为5呢

第 2 题:['1', '2', '3'].map(parseInt) what & why ?

人生戏 2022-05-04 13:57:52

看了这个题目后专门去研究了parseInt,parseInt的参数
parseInt(String,radix)里的radix根本就没有这么简单,radix根本就不是单纯的进制,详情看我简书的文章
parseInt详解-你以为radix指的进制吗?
parseInt

parseInt('45', 5) //4 这个应该算是parseInt的内部处理,跟radix是不是进制数没有关系。
MDN文档上是这样写的:
如果 parseInt 遇到的字符不是指定 radix 参数中的数字,它将忽略该字符以及所有后续字符,并返回到该点为止已解析的整数值。 parseInt 将数字截断为整数值。 允许前导和尾随空格。

第 2 题:['1', '2', '3'].map(parseInt) what & why ?

人生戏 2022-05-04 13:54:17

稍微对二分查找改造一下就可以,找到目标值之后左右滑动确定值

 function findBoundary(source, target, start = 0, end = source.length - 1) {
    if (end - start === 1) {
      if (source[start] !== target) return -1;
      return leftAndRight(source, target, start);
    }
    const mid = start + Math.floor((end - start) / 2);
    if (source[mid] < target) {
      return findBoundary(source, target, mid, end);
    } else if (source[mid] > target) {
      return findBoundary(source, target, start, mid);
    } else {
      return leftAndRight(source, target, mid);
    }
  }

  function leftAndRight(source, target, mid) {
    let i = mid;
    let j = mid;
    while (source[i - 1] === target) {
      i--;
    }
    while (source[j + 1] === target) {
      j++;
    }
    return [i, j];
  }

第 150 题:二分查找如何定位左边界和右边界

更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文