首页 > 其他分享 >代码随想录 第六天 哈希表理论基础 ● 242.有效的字母异位词 ● 349. 两个数组的交集 ● 202. 快乐数 ● 1. 两数之和

代码随想录 第六天 哈希表理论基础 ● 242.有效的字母异位词 ● 349. 两个数组的交集 ● 202. 快乐数 ● 1. 两数之和

时间:2024-02-27 16:00:31浏览次数:30  
标签:map arr 202 int 随想录 哈希 new LeetCode 两数

LeetCode:242. 有效的字母异位词 - 力扣(LeetCode)

思路:既然只判断两个字符串的字母,就一个++,一个- -,最后如果二十六个字母都是零,说明两个字符串相等。

反思:   //charat(i)是返回字符串索引,所以s.charAt(i)-'a'实际上是获取字符串s中第i个字符相对于字母'a'的偏移量。

      增强for: 语法形式是:for (元素类型 元素变量 : 遍历对象) {循环体}。它用于遍历数组、集合或其他可迭代对象。在每次循环迭代时,它会自动获取遍历对象中的下一个元素,并将其赋值给循环中的元素变量。

public boolean isAnagram(String s, String t) {
        int[] record = new int[26];
        for(int i = 0; i<s.length(); i++){
            //charat(i)是返回字符串索引,所以s.charAt(i)-'a'实际上是获取字符串s中第i个字符相对于字母'a'的偏移量。
                record[s.charAt(i)-'a']++;
        }
        for(int i = 0; i<t.length(); i++){
            record[t.charAt(i)-'a']--;
        }
        // record数组如果有的元素不为零0,说明字符串s和t 一定是谁多了字符或者谁少了字符。等于0就表示是s,t是字母异位数。
        for(int i : record){
            if(i != 0){
                return false;
            }
        }
        return true;
    }

LeetCode:349. 两个数组的交集 - 力扣(LeetCode)

思路: 都存到一张哈希表上,第二组数组判断一下哈希表里有没有,有就说明这数是两数组共有的,代码其中的哈希表判断比较重要

    contains()该方法用于检查集合或列表中是否包含指定的元素i。如果包含,则返回true,否则返回false。这种方法通常用于搜索特定元素是否存在于集合或列表中

代码

public int[] intersection(int[] nums1, int[] nums2) {
            Set<Integer> set1 = new HashSet<>();
            Set<Integer> set2 = new HashSet<>();
            for (int i = 0; i < nums1.length; i++) {
                set1.add(nums1[i]);
            }
            for (int i : nums2) {
                if (set1.contains(i)) {
                    set2.add(i);
                }

            }
        //return resSet.stream().mapToInt(x -> x).toArray();
        //这行代码的作用是将一个ResultSet中的数据映射为一个int类型的数组。具体来说,这行代码首先将ResultSet中的数据转换为一个Stream,然后使用mapToInt()方法将Stream中的元素逐个映射为int类型,最后使用toArray()方法将映射后的结果转换为一个int类型的数组并返回。
            int[] arr = new int[set2.size()];
            int j = 0;
            for (int i : set2) {
                arr[j++] = i;
            }
            return arr;

        }

 LeetCode:202. 快乐数 - 力扣(LeetCode)

思路:首先是判断最后在不重复的情况下n最后是1,还需要一个累加器,将这些数都放到哈希set里,每次添加之前要确定这个数之前没有存过,并且当 n = 1的时候就说明这个数是快乐数。

class Solution {
    public boolean isHappy(int n) {
        Set<Integer> record = new HashSet<>();
        //确定哈希表里没有出现过,并且n不是1;
        while( n != 1 && !record.contains(n)){
            record.add(n);
            n = getNextNumber(n);
        }
        //跳出说明成立
        return n == 1;

    }
    
    private int getNextNumber(int n) {//计算下一次每位数的平方和
        int sum = 0;
        while(n > 0){
            int temp = n % 10;
            sum += temp * temp;
            n = n / 10;
        }
        return sum;

    }
}

LeetCode:1. 两数之和 - 力扣(LeetCode)

思路:当题目中需要找到对应下标时用map,这回key,value不同往常,key是元素,value是下标,这样当通过key才能找到下标。

  "containsKey" 是一个用于检查 Map 中是否包含指定键的方法。如果 Map 包含指定键,则返回 true,否则返回 false。

public int[] twoSum(int[] nums, int target) {
            int[] arr = new int[2];
            Map<Integer, Integer> map = new HashMap<>();
            //遍历map中有没有目标值(target - key/temp)
            for (int i = 0; i < nums.length; i++) {
                int temp = target - nums[i];
                if (map.containsKey(temp)) {//判断map里有没有对应的key
                    arr[0] = map.get(temp);
                    arr[1] = i;
                } else//没有就将该组数加到map集合里。
                    map.put(nums[i], i);
            }
            return arr;

        }

 

标签:map,arr,202,int,随想录,哈希,new,LeetCode,两数
From: https://www.cnblogs.com/lengbo/p/18036319

相关文章

  • 《产品需求分析与管理》(深圳2024年3月22-23日)
    【课程背景】客户的需求不断变化,如何快速高效地推出满足客户需求、具有差异化优势和竞争优势的产品,并最终获得市场的成功,是企业的核心问题。目前国内许多科技型企业在产品需求管理方面存在如下问题:产品开发没有实现市场驱动,是“闭门造车”,关注技术而不关心客户;产品开发出来后......
  • 2024牛客寒假算法基础集训营1(补题)
    目录ABCDEFGHIKLAn的范围很小暴力直接\(O(n^3)\)直接做就行。我还傻的统计了一下前后缀,不过怎么写都行这道题。#include<bits/stdc++.h>#defineintlonglong#definerep(i,a,b)for(inti=(a);i<=(b);++i)#definefep(i,a,b)for(inti=(a);i>=(b);--i)#d......
  • 2024-02-27-物联网系统编程(7- 共享内存)
    7.共享内存7.1共享内存概述​共享内存允许两个或者多个进程共享给定的区域共享内存的特点共享内存是进程间共享数据的一种最快的方法;一个进程向共享的内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内容。使用共享内存要注意的是多个进程之......
  • 20240219
    State的使用在Compose中,我们可以使用State来管理数据,State是一个可以被观察的数据,当数据发生变化时,State会通知所有的观察者。我们可以使用State来管理UI的状态,比如显示和隐藏组件、改变组件的样式等。什么时候使用State当我们需要管理UI的状态时,我们可以使用State。比如,当我们......
  • 20240218
    记账本App主页页面的绘制记账本App的主页界面绘制@OptIn(ExperimentalMaterial3Api::class)@ComposablefunExpenseTrackerApp(appViewModel:ExpenseTrackerViewModel=viewModel()){valappUiStatebyappViewModel.uiState.collectAsState()Box(modifie......
  • 【2024-02-18】连岳摘抄
    23:59在即将远行和改变生活方式的时刻,善于反省的人总怀着一种严肃的心情。每逢这样的时刻,人们通常是检查过去和计划未来。                                                ......
  • 【2024-02-17】连岳摘抄
    23:59尽管如此,还要坚持,希望就像盐巴一样,没有营养,但它给面包增添了味道。                                                 ——若泽·萨拉马戈强者可以制定规则,强者......
  • 2024-02-27-物联网系统编程(6-消息队列)
    6.消息队列6.1IPC对象​除了最原始的进程间通信方式信号、无名管道和有名管道外,还有三种进程间通信方式,这三种方式称之为IPC对象:消息队列、共享内存、信号灯集。​IPC对象也是在内核空间开辟区域,每一种IPC对象创建好之后都会将其设置为全局,并且会给其分配一......
  • 2024 省选复习 (updating)
    前言快省选了,在复习,但是不知道干什么。所以就写点东西吧。就是瞎写写,所以可能有很多错误,如果发现了欢迎指出。常见错误&注意事项数组不能开大,也不能开小题目要求什么千万不能读错,最好手算一下样例算法复习树状数组进阶P6619原本是树状数组二分的模板题,但是用......
  • 2023 csp游记
    省流:XJ小丑,挂分笑话初赛前一天晚上2023年9月15日学了一会数学,学傻了,还是题题不会,希望明天初赛能有个好成绩。看到了一些与我年龄相同但爆杀我的人,觉得自己太菜了。初赛当天2023年9月16日早上6:30起来了,觉得稍微有点困,稍微复习了一会,吃了个早饭就出发去海创了。海创很大,门......