首页 > 编程语言 >代码随想录算法训练营,9月2日 | 242.有效的字母异位词,349. 两个数组的交集,202. 快乐数,1. 两数之和

代码随想录算法训练营,9月2日 | 242.有效的字母异位词,349. 两个数组的交集,202. 快乐数,1. 两数之和

时间:2024-09-02 21:25:48浏览次数:13  
标签:202 return 数组 int sum 随想录 哈希 new 两数

哈希表理论基础
1.根据关键码的值而直接进行访问的数据结构(直白来讲其实数组就是一张哈希表,哈希表中关键码就是数组的索引下标,然后通过下标直接访问数组中的元素);
2.哈希表都是用来快速判断一个元素是否出现集合里;
3.哈希函数:把值对应到哈希表的函数;哈希碰撞:映射到哈希表同一个索引下标的位置
4.HashMap,HashSet。

242.有效的字母异位词
题目链接:242.有效的字母异位词
文档讲解︰代码随想录(programmercarl.com)
视频讲解︰有效的字母异位词
日期:2024-09-02

想法:用大小为26数组做哈希表,存s中的字母个数,然后遍历t做减法,再判断数组里是不是全为0即可。
Java代码如下:

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

总结:哈希表最简单的形式-数组,还有ASC码的运用。

349. 两个数组的交集
题目链接:349. 两个数组的交集
文档讲解︰代码随想录(programmercarl.com)
视频讲解︰两个数组的交集
日期:2024-09-02

想法:可以用数组,但要考虑数组里数字的大小,数字太大了导致数组太长,这里用HashSet,将nums1的值加到集合里,对比nums2的内容,最后注意输出数组就行
Java代码如下:

class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        Set<Integer> set1 = new HashSet<>();
        Set<Integer> resSet = new HashSet<>();
        for (int i : nums1) {
            set1.add(i);
        }
        for (int i : nums2) {
            if (set1.contains(i)) {
                resSet.add(i);
            }
        }
        int[] result = new int[resSet.size()];
        int j = 0;
        for(int i : resSet){
            result[j++] = i;
        }
        return result;
    }
}

总结:初见用集合做哈希表,一次只存一个数。

202. 快乐数
题目链接:202. 快乐数
文档讲解︰代码随想录(programmercarl.com)
日期:2024-09-02

想法:快乐数的计算方法一直走下去只会有两种结果,一是确定能变成1,二是循环,而循环就是看有没有值重复,用哈希表记录下就行了。
Java代码如下:

class Solution {
    private int getSum(int n) {
        int sum = 0;
        while (n > 0) {
            sum += (n % 10)* (n % 10);
            n = n / 10;
        }
        return sum;
    }
    public boolean isHappy(int n) {
        Set<Integer> record = new HashSet<>();
        while (true) {
            int sum = getSum(n);
            if(sum == 1){
                return true;
            }
            if(record.contains(sum)){
                return false;
            }else{
                record.add(sum);
            }
            n = sum;
        }
    }
}

总结:注意下计算各位的平方和计算。

1. 两数之和
题目链接:1. 两数之和
文档讲解︰代码随想录(programmercarl.com)
视频讲解︰两数之和
日期:2024-09-02

想法:对于数组里的一个数,我们要确定有没有另外一个数能和它加起来得到target,这个数是可以算出来的。我们就考虑依次遍历数组,用一个数据结构来保存遍历过的数,如果有能对上的数就输出,问题在于要知道这个数及其它的在原本数组中的角标,需要2个值,set这是就不行了,得用map。
Java代码如下:

class Solution {
    public int[] twoSum(int[] nums, int target) {
        Map<Integer, Integer> indexMap = new HashMap<>();
        for(int i = 0; i < nums.length; i++){
            if(indexMap.containsKey(target - nums[i])){
                int[] result =  new int []{i, indexMap.get(target - nums[i])};
                return result;
            } else{
                indexMap.put(nums[i], i);
            }
        }
        return null;
    }
}

总结:思路是比较简单的,注意Java一些表达的问题,用的比较少。

标签:202,return,数组,int,sum,随想录,哈希,new,两数
From: https://www.cnblogs.com/wowoioo/p/18393577

相关文章

  • android AccessibilityService合法合规采集大众点评app商店商品详情(2024-09-02)
    免责任声明:任何可操作性的内容与本人无关,文章内容仅供参考学习,如有侵权损害贵公司利益,请联系作者,会立刻马上进行删除。一、原理介绍1、打开大众点评app商店publicvoidopen_shop(Contextcontext,Stringshop_id){Stringurl="dianping://gcshopshell?shop......
  • [20240902]验证sql_idz.sh计算PLSQL代码块.txt
    [20240902]验证sql_idz.sh计算PLSQL代码块.txt--//测试验证sql_idz.sh计算PLSQL代码块是否正确.1.环境:SYS@book>@ver2==============================PORT_STRING                  :x86_64/Linux2.4.xxVERSION                     ......
  • [20240902]建立完善sql_idz.sh脚本.txt
    [20240902]建立完善sql_idz.sh脚本.txt--//增加hash_value的16进制显示采用大小写显示.$cat-v~/bin/sql_idz.sh#!/bin/bash#calcucatesql_textoffull_hash_value(16),hash_value(10),sql_id(32).#argv1sqlstatementorsqloftextfile#argv2flag:0=sqlstatement......
  • Kuasar 最前沿:KubeCon China 2024 精彩回顾
    8月21日-23日,由云原生计算基金会(CNCF)和Linux基金会联合主办的KubeCon+CloudNativeCon+OpenSourceSummit+Al_devChina2024大会在中国香港盛大召开。会上,多位Kuasar社区Maintainer分享了关于云原生容器运行时与大模型等领域前沿技术的案例实践与经验思考。KubeConChina......
  • C#/.NET/.NET Core技术前沿周刊 | 第 3 期(2024年8.26-8.31)
    前言C#/.NET/.NETCore技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NETCore领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。欢迎投稿,推荐或自荐优质文章/项目/学习资源等。每周一定期发......
  • android AccessibilityService合法合规增加小红书笔记曝光阅读量(2024-09-02)
    免责任声明:任何可操作性的内容与本人无关,文章内容仅供参考学习,如有侵权损害贵公司利益,请联系作者,会立刻马上进行删除。一、分析目前可增加曝光阅读流量渠道入口(完成)1.发现页打开小红书app选择顶部发现页(完成)2.搜索页打开小红书app点击右上角搜索,进入搜索结果页(完成)3.......
  • Autodesk 3DS Max v2025 激活版下载及安装教程
    前言Autodesk3dsMax是一款功能强大的3D建模和动画解决方案,游戏开发人员、视觉效果艺术家和平面设计师使用它来创建庞大的世界、令人惊叹的场景和引人入胜的虚拟现实(VR)体验。Autodesk3DSMAX是业界使用最广泛的3D建模和动画软件程序之一,它将为用户提供一系列新功能和工......
  • 2024.9.2 Python,用栈写每日温度,等差数列划分,子串所有可能性,等差数列划分,深度优先搜索
    1.每日温度给定一个整数数组temperatures,表示每天的温度,返回一个数组answer,其中answer[i]是指对于第i天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用0来代替。示例1:输入:temperatures=[73,74,75,71,69,72,76,73]输出:[1,1,4,2,......
  • Autodesk Maya v2025 激活版下载及安装教程 (三维动画建模渲染)
    前言AutodeskMaya是一款用于三维动画、建模、仿真和渲染的软件。它是电影、电视、游戏和虚拟现实等领域中最流行的专业工具之一,被广泛用于制作复杂的特效和动画。功能完善,工作灵活,制作效率高,真实感强,是一款高端电影制作软件。它集成了最先进的动画和数字特效技术的别名和波前。......
  • 一图看懂天润云(2167.HK)2024年中期业绩
    ......