Skip to content

Latest commit

 

History

History
99 lines (65 loc) · 1.96 KB

第一期推荐题目-各种相加.md

File metadata and controls

99 lines (65 loc) · 1.96 KB

推荐题目

题目
415 Add Strings
67 Add Binary
2 Add Two Numbers
445 Add Two Numbers II
66 Plus One

主题

相加问题

推荐思考

类似的问题形成自己的模版,方便复习记忆.

以上题目的模版相似度大概有80%

模版

public class AddStrings {

    public String addStrings(String num1, String num2) {

        int len1 = num1.length();
        int len2 = num2.length();

        int i = len1 - 1, j = len2 - 1;

        int over = 0;


        StringBuilder sb = new StringBuilder();

        while (i >= 0 || j >= 0) {
            int a = i >= 0 ? num1.charAt(i--) - '0' : 0;
            int b = j >= 0 ? num2.charAt(j--) - '0' : 0;

            sb.append((a + b + over) % 10);
            over = (a + b + over) / 10;
        }

        if (over > 0) {
            // 9 + 9  = 18 
            sb.append(1);
        }

        return sb.reverse().toString();

    }

    public static void main(String[] args) {
        System.out.println(new AddStrings().addStrings("584", "18"));
    }
}
 public int[] plusOne(int[] digits) {

        LinkedList<Integer> list = new LinkedList<Integer>();
        int plus[] = new int[]{1};
        int i = digits.length-1, j = plus.length-1;
        int over = 0;
        while (i >= 0|| j >= 0) {
            int a = (i >= 0) ? digits[i--] : 0;
            int b = (j >= 0) ? plus[j--] : 0;
            int sum = (a + b + over) % 10;
            over = (a + b + over) / 10;
            list.addFirst(sum);

        }
        if (over == 1) {
            list.addFirst(1);
        }
        int[] res = new int[list.size()];
        int k=0;
        for(int num :list){
            res[k++]=num;
        }
        return res;

    }

更多见博客 https://imatvoid.github.io/tag/41zWzzRyW/