首页 > 其他分享 >tss

tss

时间:2023-01-24 12:22:33浏览次数:58  
标签:target nums int char length ints tss

代码随想录 | Day6-2 | LC 01两数之和、242. 有效的字母异位词

1. 两数之和

image-20230119205502517

解法1,利用HashMap(map.get(Key))实现数的存储和输出

class Solution {
    public int[] twoSum(int[] nums, int target) {
        Map<Integer,Integer> map = new HashMap<>();
        int[] ints = new int[2];
        for (int i = 0; i < nums.length; i++) {
            int goal_num=target-nums[i];
            if (map.containsKey(goal_num)){
                ints[0]=i;
                ints[1]=map.get(goal_num);
                break;
            }
            map.put(nums[i],i);
        }
        return ints;
    }
}

思路

  1. 是对于hashmap的利用,即利用其key和value的特性,达到二维数组的存储效果,存储两个数值

  2. 是哈希表的优势就在于O(1)的查找,利用map.get(Key)函数,可以直接实现目标数的查找

  3. 就是对于题意的理解,寻找两数之和翻译过后的意思其实是寻找目标值target作差后值的数字

    即int goal_num=target-nums[i];

参考资料

ACM 选手图解 LeetCode 两数之和 | 编程文青李狗蛋

「代码随想录」梦开始的地方!

解法2:暴力解法

思路:两层,外层取遍历nums[i],内层遍历nums[i+1],再一个if,直接解决……(够无脑哈哈……)

class Solution {
    public int[] twoSum(int[] nums, int target) {
        int[] ints = new int[2];
        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;
                    break;
                }
            }
        }
        return ints;
    }
}

242. 有效的字母异位词

image-20230120161904797

解法1: 利用哈希映射将存储元素进行比较

    class Solution {
        public boolean isAnagram(String s, String t) {
            int[] record = new int[26];
            if (s.length()!=t.length()){
                return false;
            } //basecase
            
            for (int i = 0; i <s.length() ; i++) {
                char c = s.charAt(i);//String转char
                record[c-'a']++;//char转int
            }
            for (int i = 0; i <t.length() ; i++) {
                char c = t.charAt(i);
                record[c-'a']--;
            }
            for (Integer i : record) {
                if (i!=0){
                    return false;
                }
            }
            return true;
        }
    }

解法2:排序,然后直接遍历

class Solution {
        public boolean isAnagram(String s, String t) {
            if(s.length()!=t.length()){
                return false;
            }
         char[] char_s = s.toCharArray();
         char[] char_t  = t.toCharArray();
            Arrays.sort(char_s);
            Arrays.sort(char_t);
            int for_length=Math.min(s.length(),t.length());
            for (int i = 0; i <for_length; i++) {
                if (char_s[i]!=char_t[i]){
                    return false;
                }
            }
            return true;
        }
    }

思路:

image-20230123180140059

资料:

image-20230123180313012

「代码随想录」有效的字母异位词

[我自己的草稿](https://flowus.cn/share/22429806-7be9-4834-94e3-2f182d2d87d7
【FlowUs 息流】Untitled (Draft).pdf)

image-20230123180636386

image-20230123181230668

image-20230123181602271

Test1

test2

test3

image-20230123181626121

image-20230123181642438

image-20230123181646242

image-20230123192155839

image-20230123200639523

image-20230123200948773

imgNBV~0){8C.jpg)

imgNBV~0){8C.jpg)

image-20230123203527618

image-20230123203909269

image-20230123204454799

https://flowus.cn/share/dcbbbdb5-fac4-4948-9ecb-e3a836e3d081

计划本

image-20230124112903292

标签:target,nums,int,char,length,ints,tss
From: https://www.cnblogs.com/szwsama/p/17065995.html

相关文章