解题思路:时间复杂度O(
m
a
x
(
l
e
n
1
,
l
e
n
2
)
max(len1,len2)
max(len1,len2)),len1和len2为两个正整数的长度,空间复杂度O(
1
1
1),java的空间复杂度为O(
n
n
n),因为java的字符串底层的字符数组是final修饰的常量,无法修改,只能使用StringBuffer或StringBuilder等容器
采取低位相加逢十进一法
每次取低位两个数相加,如果结果大于十,就进1
用一个变量保存进位信息。
代码
classSolution{publicStringaddStrings(String num1,String num2){int m = num1.length(), n = num2.length();//两个加数int[] ans =newint[m+n+1];//保存最终相加结果int k = m+n, i = m-1, j = n-1;//k是ans的下标,i是num1的下标,j是num2的下标,从低位开始逢十进一int add =0;//进位while(i >=0|| j >=0|| add !=0){//如果还有数可加int d1 = i >=0? num1.charAt(i)-'0':0;//如果有加数1,就获取,否则为0int d2 = j >=0? num2.charAt(j)-'0':0;//有加数2就获取,否则为0int sum = d1+d2+add;//加数1+加数2+进位
ans[k--]= sum %10;//将数字取余10的结果放到ans的后面
add = sum /10;//将进位信息提取出来
i--;//下一个数
j--;//下一个数}StringBuilder res =newStringBuilder();//转成字符串for(k = k+1;k<ans.length;k++) res.append(ans[k]);return res.length()>=1? res.toString():"0";//返回结果}}
ChromeOS 更新的飞快,旧文章的方法也老是不好用,找遍了也没找到很好的可以开机自启动 Linux VM 和输入法、托盘的方法。
研究了一下(不,是很久),终于找到个丑陋的实现。
方法基于 ChromeOS 123.0.6312.94…
文章目录 一、多表查询二、mybatis-plus条件查询三、分页查询 一、多表查询
可能会用到的注解 这里的场景是,查询每个用户及其所有的订单。就是查询你的id号的同时,把你所有的历史订单信息都拉出来。
表结构这样
CREATE TABLE User ( id INT PRIMARY…