数字与数学高频问题(算法村第十三关白银挑战)

数组实现加法专题

数组实现整数加法

66. 加一 - 力扣(LeetCode)

给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。

你可以假设除了整数 0 之外,这个整数不会以零开头。

示例 1:

输入:digits = [1,2,3]
输出:[1,2,4]
解释:输入数组表示数字 123

示例 2:

输入:digits = [4,3,2,1]
输出:[4,3,2,2]
解释:输入数组表示数字 4321

示例 3:

输入:digits = [0]
输出:[1]

提示:

  • 1 <= digits.length <= 100
  • 0 <= digits[i] <= 9
解一
public int[] plusOne(int[] digits)
{for (int i = digits.length - 1; i >= 0 ; i--){//若某一位加一后不会产生进位,则该位加一后直接返回if(digits[i] != 9){digits[i]++;return digits;}//发生进位,低位归零digits[i] = 0;}//进位发生在最高位:99999999int[] ans = new int[digits.length + 1];ans[0] = 1;return ans;
}
解二
public int[] plusOne(int[] digits)
{for (int i = digits.length - 1; i >= 0 ; i--){digits[i]++;//计算低位digits[i] = digits[i] % 10;//加一后不出现进位,直接返回if(digits[i] != 0)return digits;}//进位发生在最高位:99999999int[] ans = new int[digits.length + 1];ans[0] = 1;return ans;
}

字符串相加

415. 字符串相加 - 力扣(LeetCode)

给定两个字符串形式的非负整数 num1num2 ,计算它们的和并同样以字符串形式返回。

你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。

示例 1:

输入:num1 = "11", num2 = "123"
输出:"134"

示例 2:

输入:num1 = "456", num2 = "77"
输出:"533"

示例 3:

输入:num1 = "0", num2 = "0"
输出:"0"

提示:

  • 1 <= num1.length, num2.length <= 104
  • num1num2 都只包含数字 0-9
  • num1num2 都不包含任何前导零
StringBuilder + 位数不同就补零
public String addStrings(String num1, String num2)
{int i = num1.length() - 1;int j = num2.length() - 1;int carry = 0;  //进位StringBuilder ans = new StringBuilder();while (i >= 0 || j >= 0 || carry == 1){int x = i >= 0 ? num1.charAt(i) - '0' : 0;int y = j >= 0 ? num2.charAt(j) - '0' : 0;int curSum = x + y + carry;ans.append(curSum % 10);    //先把低位相加的结果放在前面carry = curSum / 10;i--;j--;}//反转:高位在前,低位在后。然后StringBuilder类型转为字符串类型再返回return ans.reverse().toString();
}

二进制求和

67. 二进制求和 - 力扣(LeetCode)

给你两个二进制字符串 ab ,以二进制字符串的形式返回它们的和。

示例 1:

输入:a = "11", b = "1"
输出:"100"

示例 2:

输入:a = "1010", b = "1011"
输出:"10101"

提示:

  • 1 <= a.length, b.length <= 104
  • ab 仅由字符 '0''1' 组成
  • 字符串如果不是 "0" ,就不含前导零

把求余和整除换成2即可

public String addBinary(String a, String b)
{int i = a.length() - 1;int j = b.length() - 1;int carry = 0;  //进位StringBuilder ans = new StringBuilder();while (i >= 0 || j >= 0 || carry == 1){int x = i >= 0 ? a.charAt(i) - '0' : 0;int y = j >= 0 ? b.charAt(j) - '0' : 0;int curSum = x + y + carry;ans.append(curSum % 2);    //先把低位相加的结果放在前面carry = curSum / 2;i--;j--;}//反转:高位在前,低位在后。然后StringBuilder类型转为字符串类型再返回return ans.reverse().toString();
}

幂运算

2 的幂

231. 2 的幂 - 力扣(LeetCode)

给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false

如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方

提示:

  • -2^31 <= n <= 2^31 - 1

**进阶:**你能够不使用循环/递归解决此问题吗?

循环一
public boolean isPowerOfTwo(int n)
{//负数和0不可能是2的幂次方if (n <= 0)return false;for (int i = 0; Math.pow(2, i) < Integer.MAX_VALUE; i++){if(n == Math.pow(2, i))return true;}return false;
}
循环二

2的幂次方的特点:整除2后是偶数,不断整除2的结果是1

这个方法比循环一要高效

public boolean isPowerOfTwo_3(int n)
{if (n <= 0)return false;while (n % 2 == 0)n = n / 2;return n == 1;
}
位运算

正整数 n 是 2 的幂,当且仅当 n 的二进制表示中只有最高位是 1,其余位都是 0

public boolean isPowerOfTwo(int n)
{//n & (n - 1)的作用是消除 n 的二进制表示中最低位的1//如果 n 是2的幂次方,那 n 的二进制表示中只有最高位为1//除去1后,结果应该为零,否则就不是2的幂次方return n > 0 && ((n & (n - 1)) == 0);
}

3 的幂

326. 3 的幂 - 力扣(LeetCode)

给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false

整数 n 是 3 的幂次方需满足:存在整数 x 使得 n == 3x

循环
public boolean isPowerOfThree(int n)
{if (n <= 0)return false;while (n % 3 == 0)n = n / 3;return n == 1;
}
一步到位

如果n是3的幂次方,则整型范围内n一定是最大的3的幂次方的除数

public boolean isPowerOfThree(int n)
{// 1162261467 is the largest power of 3return (n > 0) && (1162261467 % n == 0);
}

4的幂

342. 4的幂 - 力扣(LeetCode)

给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false

整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4x

循环
public boolean isPowerOfThree(int n)
{if (n <= 0)return false;while (n % 4 == 0)n = n / 4;return n == 1;
}
位运算

在这里插入图片描述

同余符号 ≡:在数论中使用,表示两个整数除以同一个数后余数相等。例如,a ≡ b (mod m)表示ab除以m后有相同的余数。

由于

4 ≡ 1 ( mod 3)

4^2 ≡ 1^2 ≡ 1 ( mod 3)

4^3 ≡ 1^3 ≡ 1 ( mod 3)

以此类推,可以得出对于任何整数4^x ≡ 1 ( mod 3)

public boolean isPowerOfFour(int n)
{//若n是4的幂次方,则n一定是2的幂次方return n > 0 && (n & (n - 1)) == 0 && n % 3 == 1;
}

更多题目

50. Pow(x, n) - 力扣(LeetCode)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/244359.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在 Ubuntu 20.04 上安装 Nginx

前些天发现了一个人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;最重要的屌图甚多&#xff0c;忍不住分享一下给大家。点击跳转到网站。 如何在 Ubuntu 20.04 上安装 Nginx 介绍 Nginx是世界上最受欢迎的 Web 服务器之一&#xff0c;负责托管互联网…

Mac Idea安装后无法启动

1、起因 想安装一个新版的idea2023.3.2&#xff0c;结果安装完之后直接无法启动 以为是卸载不干净&#xff0c;下载了一个腾讯柠檬&#xff0c;结果将2018版也一并卸载了 好家伙&#xff0c;彻底没得用 2、找原因 1&#xff09;查看idea报错信息 网上找了一圈&#xff0c;其…

C++笔试强训选择题1

选择题 1.选择表达式 11|10 的结果&#xff08;本题数值均为十进制&#xff09;&#xff08;&#xff09; A.11 B.10 C.8 D.2 11的二进制为1011&#xff0c;10的二进制为1010 1011 |&#xff08;或&#xff09;1010 1011 | 按位或 有1为1&#xff0c;& 按位…

归并排序详解

基本思想&#xff1a; 归并排序&#xff08;MERGE-SORT&#xff09;是建立在归并操作上的一种有效的排序算法&#xff0c;该算法是采用分治法&#xff08;Divide and Conquer&#xff09;的一个非常典型的应用。将已有序的子序列合并&#xff0c;得到完全有序的序列&#xff1…

MySQL也开始支持JavaScript了

2023 年 12 月 16 日&#xff0c;Oracle 公司在一篇名为 《Introducing JavaScript support in MySQL》的文章中宣布 MySQL 数据库服务器将开始支持 JavaScript 语言。 这个举措标志着继PostgreSQL之后&#xff0c; MySQL 也支持使用 JavaScript 编写函数和存储过程了。作为最…

逻辑分析仪软件PulseView 下载链接及使用,zadig更改USB端口名称

1、打开zadig&#xff0c;List All Devices 2、选择Cypress FX2LP No EEPROM Device&#xff0c;点击Edit&#xff0c;重新命名成fx2lafw 3、打开PulseView。 PulseView 64位版本的&#xff08;pulseview-0.4.1-64bit-static-release-installer.exe&#xff09; 下载链接&…

OpenKruiseGame × KubeSphere 联合发布游戏服运维控制台,推动云原生游戏落地

作者&#xff1a;云原生游戏社区 近日&#xff0c;云原生游戏开源社区旗下 OpenKruiseGame&#xff08;以下简称&#xff1a;OKG&#xff09;基于 KubeSphere 4.0 LuBan 架构开发的游戏服运维控制台 OKG Dashboard 正式发布&#xff01;现已上架 KubeSphere Marketplace 云原生…

微信小程序(十)表单组件(入门)

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.type 属性指定表单类型 2.placeholder 属性指定输入框为空时的占位文字 源码&#xff1a; form.wxml <!-- 提前准备好的布局结构代码 --> <view class"register"><view class"…

数据结构之线性表(一般的线性表)

前言 接下来就开始正式进入数据结构环节了&#xff0c;我们先从线性表开始。 线性表 线性表&#xff08;linear list&#xff09;也叫线性存储结构&#xff0c;即数据元素的逻辑结构为线性的数据表&#xff0c;它是数据结构中最简单和最常用的一种存储结构&#xff0c;专门存…

上位机图像处理和嵌入式模块部署(自定义算法)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 我们在使用opencv的时候&#xff0c;虽然大部分算法都不需要我们自己重头开始编写&#xff0c;但是总有一些关于我们自己产品的know-how&#xff0…

智能养老设备行业研究:到2026年市场规模有望突破1760亿元

随着老年消费需求的持续增长&#xff0c;国家越来越重视智慧健康养老产业的发展&#xff0c;发布了一系列政策扶持老年用品和适老化产品&#xff0c;利好智能养老设备行业的发展。在需求和政策的推动下&#xff0c;我国智能养老设备行业的市场规模快速增长。 智能养老设备是紧密…

《WebKit 技术内幕》学习之五(4): HTML解释器和DOM 模型

4 影子&#xff08;Shadow&#xff09;DOM 影子 DOM 是一个新东西&#xff0c;主要解决了一个文档中可能需要大量交互的多个 DOM 树建立和维护各自的功能边界的问题。 4.1 什么是影子 DOM 当开发这样一个用户界面的控件——这个控件可能由一些 HTML 的标签元素…

数控六面钻技术成熟-为家具产业注入新活力

随着科技的不断发展&#xff0c;数控六面钻技术作为一项先进的加工技术&#xff0c;在家具制造领域得到了广泛应用。然而&#xff0c;对于许多企业而言&#xff0c;这一技术的成熟稳定程度仍然是他们关注的焦点。本文将围绕数控六面钻技术的成熟稳定性展开探讨&#xff0c;以期…

WordPress怎么去除jquery和CSS静态文件链接中的版本号?附2种方法

我们很多WordPress网站默认情况下所加载的jquery和CSS静态文件链接中都会带有相应的版本号&#xff0c;比如boke112百科使用的YIA主题&#xff0c;加载CSS文件时就会在链接地址后面加上?ver2.7&#xff0c;即是style.css?ver2.7 除了CSS文件会加上版本号外&#xff0c;加载主…

Cesium for Unity包无法加载

太上老君急急如律⚡令⚡ &#x1f959;关闭UnityHub&#x1f9c0;启动梯子&#x1f96a;cmd 启动UnityHub &#x1f959;关闭UnityHub &#x1f9c0;启动梯子 &#x1f96a;cmd 启动UnityHub 把批处理启动文件&#x1f448;中的exe的路径换成自己的安装目录&#xff01;保存…

frida https抓包

web端导入证书、https代理即可解决大部分需求&#xff0c;但是&#xff0c;有些app需要处理ssl pinning验证。 废话不多说。frida处理ssl pin的步骤大体如下。 安装python3.x,并在python环境中安装frida&#xff1a; pip install frida pip install frida-tools下载frida-se…

【Java程序员面试专栏 专业技能篇】MySQL核心面试指引(一):基础知识考察

关于MySQL部分的核心知识进行一网打尽,包括三部分:基础知识考察、核心机制策略、性能优化策略,通过一篇文章串联面试重点,并且帮助加强日常基础知识的理解,全局思维导图如下所示 本篇Blog为第一部分:基础知识考察,子节点表示追问或同级提问 基本概念 包括一些核心问…

vertica10.0.0单点安装_ubuntu18.04

ubuntu的软件包格式为deb&#xff0c;而rpm格式的包归属于红帽子Red Hat。 由于项目一直用的vertica-9.3.1-4.x86_64.RHEL6.rpm&#xff0c;未进行其他版本适配&#xff0c;而官网又下载不到vertica-9.3.1-4.x86_64.deb&#xff0c;尝试通过alian命令将rpm转成deb&#xff0c;但…

SAP ERP系统是什么?SAP好用吗?

A公司是一家传统制造企业。公司曾先后使用过数个管理软件系统&#xff0c;但各部门使用的软件都是单独功能&#xff0c;导致企业日常管理中数据流与信息流相对独立&#xff0c;形成了信息孤岛。随着公司近年业务规模的快速发展以及客户数量的迅速增加&#xff0c;企业原有的信息…

python222网站实战(SpringBoot+SpringSecurity+MybatisPlus+thymeleaf+layui)-帖子详情页实现

锋哥原创的SpringbootLayui python222网站实战&#xff1a; python222网站实战课程视频教程&#xff08;SpringBootPython爬虫实战&#xff09; ( 火爆连载更新中... )_哔哩哔哩_bilibilipython222网站实战课程视频教程&#xff08;SpringBootPython爬虫实战&#xff09; ( 火…