首页 > 编程语言 >How to use JavaScript BigInt and Number.prototype.toString to handle the super large integer problem

How to use JavaScript BigInt and Number.prototype.toString to handle the super large integer problem

时间:2024-06-04 15:12:05浏览次数:18  
标签:digits use handle JavaScript number Number BigInt let

How to use JavaScript BigInt and Number.prototype.toString to handle the super large integer problems All In One

如何使用 JavaScript BigIntNumber.prototype.toStringg 处理超大整数问题

errors

function plusOne(digits: number[]): number[] {
  let n = parseInt(digits.join(``));
  return `${n + 1}`.split(``).map(Number);
};
//  // 大数相加超出 JavaScript 中的最大安全整数 (2**53 – 1) 最大值 bug ❌ 

solutions

function plusOne(digits: number[]): number[] {
  const arr: number[] = digits;
  // 进位 
  let inc = 1;
  for (let i = arr.length - 1; i >= 0; i--) {
    const n = arr[i] + inc;
    if(n >= 10 && inc) {
      arr[i] = n - 10;
      inc = 1;
    } else {
      arr[i] = n;
      inc = 0;
    }
  }
  // 最高一位进位
  if(inc) {
    arr.unshift(inc);
  }
  return arr;
};

function plusOne(digits: number[]): number[] {
  let rest: number = 1;
  let temp: number = 0;
  for(let i = digits.length -1; i >= 0; i--) {
    temp = digits[i] + rest;
    rest = temp > 9 ? 1 : 0;
    digits[i] = temp > 9 ? 0 : temp;
  }
  // 插入 1 进位
  if(rest) {
    digits.unshift(1);
  }
  return digits;
};

function plusOne(digits: number[]): number[] {
  return (BigInt(digits.join(``)) + BigInt(1)).toString().split(``).map(Number);
};

demos

function plusOne(digits: number[]): number[] {
  let rest: number = 1;
  let temp: number = 0;
  for(let i = digits.length -1; i >= 0; i--) {
    temp = digits[i] + rest;
    rest = temp > 9 ? 1 : 0; 
    digits[i] = temp > 9 ? 0 : temp; 
  }
  // 插入 1 进位
  if(rest) {
    digits.unshift(1);
  }
  return digits;
};


// BigInt ❓ https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt



// 大数相加超出 JavaScript 中的最大安全整数 (2**53 – 1) 最大值 bug ❌ 

/* 

6145390195186705543 + 1
// 6145390195186705000

 */

// function plusOne(digits: number[]): number[] {
//   let n = parseInt(digits.join(``));
//   return `${n + 1}`.split(``).map(Number);
// };


/* 

Wrong Answer
71 / 111 testcases passed

Input
digits =
[6,1,4,5,3,9,0,1,9,5,1,8,6,7,0,5,5,4,3]

Output
[6,1,4,5,3,9,0,1,9,5,1,8,6,7,0,5,0,0,0]
Expected
[6,1,4,5,3,9,0,1,9,5,1,8,6,7,0,5,5,4,4]

 */

image

https://leetcode.com/problems/plus-one/description/

(

标签:digits,use,handle,JavaScript,number,Number,BigInt,let
From: https://www.cnblogs.com/xgqfrms/p/18230786

相关文章

  • [CSS] Use CSS Grid to Animate Elements with Dynamic Height
    Currentlyweareanimatingtoafixedheightof100pxonhoversincebrowserscan'tanimatefrom0to auto:<pclass="h-0overflow-hiddentext-white/70transition-allgroup-hover:h-[100px]"> Loremipsumdolorsit,ametconsecteturad......
  • 【数据库】StarRocks、Hive、ClickHouse、Tidb的对比及使用场景
    特性StarRocksHiveClickHouseTiDB数据存储列存储(ColumnarStorage)行存储(RowStorage)列存储(ColumnarStorage)混合存储(行存储和列存储)查询性能高低高高主要用途实时分析(Real-timeAnalytics)大数据批处理(BatchProcessing)实时分析(Real-timeAnalytics)OLTP与O......
  • web前端期末大作业:美食文化网页设计与实现——美食餐厅三级(HTML+CSS+JavaScript)
    ......
  • 在JavaScript中,函数前加`async`和不加`async`的区别
    在JavaScript中,函数前加async和不加async主要有以下区别:返回值类型:加async:使用async关键字声明的函数总是返回一个Promise对象。这意味着,无论函数中返回的是什么值,它都会被自动包装在一个Promise中。不加async:普通函数返回的是其执行结果,它不会自动包装在Promise中。如果需......
  • ubuntu 解决apt-get: Some index files failed to download. They have been ignored,
    很多博主都有编写把resolve.config文件里的conserve改为8.8.8.8,但还有一种可能是没有用最新的镜像源网址,导致找不到文件,推荐找一些最近的含有镜像源的帖子。另外就是连过外网之后导致板子和环境的网域不一样,都有可能。一般把这三种方法试了之后都是可以解决问题的。镜像源没有......
  • JavaScript 验证 API
    目录什么是JavaScript验证API常见的JavaScript验证API约束验证DOM方法getElementById()方法:getElementsByTagName()方法:getElementsByClassName()方法:querySelector()方法:querySelectorAll()方法setAttribute()方法:getAttribute()方法:removeAttribute()方......
  • Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration
    问题描述:在运行单元测试时报错 1.没有启动类 2.没有加载到启动类-无法找到@SpringBootConfiguration 3.测试类包名,调整到和启动类一致即可。   测试方法在运行的时候,需要寻找到SpringBoot启动类,默认情况下会直接在当前包路径上寻找,最简单的方法就是把你要测......
  • 谷歌浏览器Lighthouse网页性能分析工具使用
    需要使用谷歌浏览器的无痕模式要不然其他浏览器插件的脚本会影响页面的性能判断使用截图操作界面点击分析按钮开始分析生成分析建议部分:红色是有必要解决的性能提升建议红色建议分析:lighthouse文档文档地址:https://developer.chrome.com/docs/lighthouse/perf......
  • WPF canvas mousewheel to zoom in or out
    <Windowx:Class="WpfApp133.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft......
  • javaScript基础22
    一、概念一门客户端脚本语言运行在客户端浏览器中的。每一个浏览器都有JavaScript的解析引擎脚本语言:不需要编译,直接就可以被浏览器解析执行了二、功能可以来增强用户和html页面的交互过程,可以来控制html元素,让页面有一些动态的效果,增强用户的体验。三、JavaScript发......