算法

时间复杂度

优秀文档

空间复杂度

优秀文档

找到题目的突变点

如果可以比完就不要管了,就不要把所有的收集好,再一个一个比

可以用switch就不要用hashmap

一个是占内存太多 ,一个只是计算

class Solution {
    public int romanToInt(String s) {
        int sum = 0;
        int preNum = getValue(s.charAt(0));
        for(int i = 1;i < s.length(); i ++) {
            int num = getValue(s.charAt(i));
            if(preNum < num) {
                sum -= preNum;
            } else {
                sum += preNum;
            }
            preNum = num;
        }
        sum += preNum;
        return sum;
    }
    private int getValue(char ch) {
        switch(ch) {
            case 'I': return 1;
            case 'V': return 5;
            case 'X': return 10;
            case 'L': return 50;
            case 'C': return 100;
            case 'D': return 500;
            case 'M': return 1000;
            default: return 0;
        }
    }



这种就没有去收集起来再比 也不会出现下标异常 先拿出一个,然后再进行跟新 preNum = num; 游标会前进

双for循环时,如果不允许自己和自己比较时,不要把i,j设为常量

for (int i = 0; i < nums.length; i++) {

            for (int j = i+1; j < nums.length; j++) {
                if (nums[i] + nums[j] == target) {
                    ints[0]=i;
                    ints[1]=j;
                    return ints;
                }
            }
        }

你可能感兴趣的:(算法)