免费下载软件的网站,网页开发培训,网站建设方面论文,wordpress大学最新模板下载1. 数组实现整数加法
题目#xff1a;LeetCode66#xff0c;66. 加一 - 力扣#xff08;LeetCode#xff09; 思路 我们只需要从头到尾依次运算#xff0c;用常量标记是否进位#xff0c;需要考虑的特殊情况是digits [9,9,9]的时候进位#xff0c;我们组要创建长度加1…1. 数组实现整数加法
题目LeetCode6666. 加一 - 力扣LeetCode 思路 我们只需要从头到尾依次运算用常量标记是否进位需要考虑的特殊情况是digits [9,9,9]的时候进位我们组要创建长度加1的数组首位添加为1即可。 代码 /*** 数组实现整数加法* 需要考虑9991变成1000解决方法创建个新数组首位补1*/public static int[] plusOne(int[] digits) {int len digits.length;//从末尾向前计算for (int i len - 1; i 0; i--) {digits[i];digits[i] % 10;//加1之后对10取余不等于0则没有进位直接返回//如果有进位循环再次执行if (digits[i] ! 0)return digits;}//三位数都有进位999-1000,创建新数组首位等于1digits new int[len 1];digits[0] 1;return digits;}
2. 字符串实现加法
题目 给定两个非负形式的字符串num1和num2计算他们的和以字符串形式返回不能使用Javaapi 思路 还是竖式计算从后往前如果当前位置超过10则发生进位用两个指针分别从两数的末尾向前移动遇到数字位数不同只需补0继续和另一位数字运算。 代码 /*** 字符串加法竖式加法需要判断是否进位。可以用变量来存储每次进位的值*/public static String addStrings(String num1, String num2) {int i num1.length() - 1, j num2.length() - 1, add 0;StringBuilder sb new StringBuilder();//位数不同补0计算while (i 0 || j 0 || add ! 0) {int x i 0 ? num1.charAt(i) - 0 : 0;int y j 0 ? num2.charAt(i) - 0 : 0;int result x y add;//先拼接余数sb.append(result % 10);//再计算是否进位add result / 10;i--;j--;}sb.reverse();return sb.toString();}3. 二进制加法
题目
LeetCode6767. 二进制求和 - 力扣LeetCode 思路 二进制加法同上题一样只不过进位变了满2进1同时也要处理出现首位继续向前进位的现象可以用最后在前方拼接进位不进位则不用拼接。 代码 /*** 二进制的加法* 同字符串加法思想一样是满2进1换种形式写代码*/public static String addBinary(String a, String b) {StringBuilder sb new StringBuilder();//是否进位的变量int ca 0;for (int i a.length() - 1, j b.length() - 1; i 0 || j 0; i--, j--) {int sum ca;sum i 0 ? a.charAt(i) - 0 : 0;sum j 0 ? b.charAt(j) - 0 : 0;sb.append(sum % 2);ca sum / 2;}//处理最后一位sb.append(ca 1 ? ca : );return sb.reverse().toString();}
补充
题目较为简单记住模板即可。