0
点赞
收藏
分享

微信扫一扫

力扣Day12

前程有光 2022-01-23 阅读 52
leetcode

1、两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。

 

注意:map集合获取键或值:只有获得单个键的值(map.get)、获取所有键(map.Keyset)、  获取所有值(map.values)

插入题外知识:Map.Entry 里提供getKey() 、getValue()。

例子:Map<String, String> map = new HashMap<String, String>();  

思路:利用map集合解决,时间复杂度只有O(n)

map集合获取键或值:只有获得单个键的值(map.get)、获取所有键(map.Keyset)、  获取所有值(map.values)并且题目要获取满足条件的索引,故只能使用map.get,并将索引值存放在Map<Integer,Integer>中的第二个Integer

即:1、map第一个Integer用来存数组的元素,第二个Integer用来存放数组的索引
       2、因为map.get获取的是Map<Integer,Integer>的第二个Integer。
       3、且题目要求索引,所以第二个Integer用来存放索引

class Solution {
    public int[] twoSum(int[] nums, int target) {
        //map第一个Integer用来存数组的元素,第二个Integer用来存放数组的索引
        //因为map.get获取的是Map<Integer,Integer>的第二个Integer。
        //且题目要求索引,所以第二个Integer用来存放索引
        Map<Integer,Integer>map=new HashMap<Integer,Integer>();
        for(int i=0;i<nums.length;i++){
            if(map.containsKey(target-nums[i])){
                return new int[]{map.get(target-nums[i]),i};//get是获取键的值
            }
            map.put(nums[i],i);
        }
        return null;
    }
}

9、回文数

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。

class Solution {
    public boolean isPalindrome(int x) {
        //判断回文数还可以用stringbuffer的reverse!!!!!! 但是会溢出 -> 字符串转成int会溢出
        if(x==0) return true;
        if(x<0||x%10==0&&x!=0)return false;
        int num=0;//回文数
        while(x>num){
            num=num*10+x%10; 
            x=x/10;
        }
        return x==num||x==num/10;
        // x为奇数: x==num/10  
        // x为偶数: x==num
    }
}

 13、罗马数字转整数

 思路:所有的罗马数字都是由七种字符组成的。首先建立一个HashMap来映射符号和值,然后对 字符串从右到左遍历,如果当前字符代表的值不小于其右边,就加上该值;否则就减去该值。以此类推到最左边的数,最终得到的结果即是答案

class Solution {
    public int romanToInt(String s) {
        if(s.length() == 0 || s == null){
            return 0;
        }
        Map<Character,Integer> map = new HashMap<>();
        map.put('I',1);
        map.put('V',5);
        map.put('X',10);
        map.put('L',50);
        map.put('C',100);
        map.put('D',500);
        map.put('M',1000);
        int res=map.get(s.charAt(s.length()-1));//获取字符串最后一个字符的值
        for(int i=s.length()-2;i>=0;i--){//从倒数第二个字符开始遍历到第一个字符
            if(map.get(s.charAt(i)) >= map.get(s.charAt(i + 1))){
                res+=map.get(s.charAt(i));
            }else{
                res-=map.get(s.charAt(i));
            }
        }
        return res;
    }
}
举报

相关推荐

Day12

Javacript Day12

Day12作业

day12 函数进阶

day12函数进阶作业

寒假JAVA学习Day12:

0 条评论