首页 > 其他分享 >[代码随想录] 第五天

[代码随想录] 第五天

时间:2024-01-15 15:57:20浏览次数:33  
标签:return nums int 代码 随想录 length new 第五天 sum

242.有效的字母异位词https://leetcode.cn/problems/valid-anagram/description/
思路:做一个基础版哈希表,哈希函数为key-'a',这样两个字符串的每个字母都会映射在26长的数组中,使用数组自增记录字母出现次数。

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

-----------------------分割线-------------------------


349. 两个数组的交集 https://leetcode.cn/problems/intersection-of-two-arrays/
思路:使用set,了解set特性与方法。注意set没有get()方法,所以便利set方式比较特殊。


class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        if(nums1==null ||nums2==null){
            return null;
        }
       Set<Integer> set1 = new HashSet<>();
       Set<Integer> ansSet = new HashSet<>();
       for(int i = 0;i<nums1.length;i++){
           set1.add(nums1[i]);
       }
       for(int i = 0;i<nums2.length;i++){
           if(set1.contains(nums2[i])){
               ansSet.add(nums2[i]);
           }
       }
       int[] ansInt = new int[ansSet.size()];
       int index =0;
       for(int i:ansSet){
           ansInt[index] =i;
           index++; 
       }
        return ansInt;
    }
}

-----------------------分割线-------------------------

202.快乐数https://leetcode.cn/problems/happy-number/submissions/495689567/
思路:难点①:n的取值范围为int范围,所以要依次取每一位数平方和相加,我使用的是String.charAt()-'0'取得char的每一个int值,较为罗嗦麻烦。
-------改进①:因为取每一位平方和,所以从高位取地位取都可以,可以使用while(n%10>0)的方式取得。
-------难点②:如果平方和重复出现一次,后续就会出现死循环,就绝对不是快乐数,可以直接返回false;所以每次可以将结果加入set中,判断是否重复,知道重复或符合快乐数条件。

class Solution {
    public boolean isHappy(int n) {

        Set<Integer> set01 = new HashSet<>();
        String s = "";
        int sum = n;
        while (true) {
            s = "";
            s += sum;
            sum = 0;
            for (int i = 0; i < s.length(); i++) {
                sum += (int) (s.charAt(i) - '0') * (int) (s.charAt(i) - '0');
            }
            if (sum == 1) {
                return true;
            }

            if (set01.contains(sum)) {
                return false;
            }
            set01.add(sum);
        }
    }
}

-----------------------分割线-------------------------
1. 两数之和https://leetcode.cn/problems/two-sum/description/
思路:使用Map,遍历数组,对元素判断target-nums[i]是否在Map中,若不存在则将该元素接入Map中,判断下一元素,若存在,则返回当前元素索引与Map中的索引。
难点:理解并使用Map的方法。

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

标签:return,nums,int,代码,随想录,length,new,第五天,sum
From: https://www.cnblogs.com/cssg/p/17965532

相关文章

  • ICLR 2022: Anomaly Transformer论文阅读笔记(2) 深度解析代码
    AnomalyTransformer是一个由Transformer:AttentionIsAllYouNeed启发出的检测时间序列异常点的无监督学习算法。在这一篇我会深度解析论文算法以及代码的一一对应,让人更方便能读懂和使用源代码。阅读笔记前篇:ICLR2022:AnomalyTransformer论文阅读笔记+代码复现阅读前提......
  • 【Vue2+3入门到实战】(18)VUE之Vuex状态管理器概述、VueX的安装、核心概念 State状态代
    目录一、[Vuex](https://vuex.vuejs.org/zh/)概述1.是什么2.使用场景3.优势4.注意:二、需求:多组件共享数据1.创建项目2.创建三个组件,目录如下3.源代码如下三、vuex的使用-创建仓库1.安装vuex2.新建`store/index.js`专门存放vuex3.创建仓库`store/index.js`4在main.j......
  • 蓝色时间轴个人博客网页模板代码
    看雪时间轴个人博客模板,女生唯美简洁个人博客静态页面模板,蓝色时间轴个人网页模板,下雪空间个人模板代码1、html页面代码<!doctypehtml><html><head><metacharset="gb2312"><title>看雪时间轴个人博客模板-bokequ.com</title><metaname="keywords"content="蓝色......
  • Dithered golden interleaver 黄金分割伪随机交织器 代码备份
    目录公式来源DitheredgoldeninterleaverTheMatrix-DitheredGoldenInterleavingAlgorithm有错误欢迎指正公式来源DesignofaModifiedInterleavingAlgorithmBasedonGoldenSectionTheoryEnhancingthePerformanceofTurboCodesDitheredgoldeninterleaver(*......
  • C#结合串口通信类实现串口通信源代码(原创)
    C#结合串口通信类实现串口通信源代码(原创) mycom是串口通信类,在本blog前一篇中有完整代码。( C#串口通信编程类(修改版) )下面是串口通讯测试程序的源代码,将mycom类放在此项目中可以实现简单的串口通信,希望读者能通过这个程序对串口通信过程有一个初步的了解:usingSystem;us......
  • jacoco代码覆盖率
    JaCoCo是一个开源的代码覆盖率工具,针对的语言为java。它可以嵌入到Ant、Maven中,也可以作为Eclipse插件使用。Jacoco主要通过代码注入(即JavaAgent)方式来实现覆盖率的功能。代码覆盖率一般分为单元测试覆盖率和功能测试覆盖率,对于开发人员,一般比较关注单元测试覆盖率,而对于测试人员......
  • .NET Conf China 2023分享-.NET应用国际化-AIGC智能翻译+代码生成
    今年.NETConfChina2023技术大会,我给大家分享了.NET应用国际化-AIGC智能翻译+代码生成的议题,今天整理成博客,分享给所有人。随着疫情的消退,越来越多的企业开始向海外拓展,应用系统的国际化和本地化是一个巨大的技术挑战,我们今天重点探讨以下内容:.NET应用如何实现国际化?不仅仅......
  • 干掉过多的 if else,让你的代码更优雅
    干掉过多的ifelse,让你的代码更优雅学习改变命运,技术铸就辉煌。大家好,我是銘,全栈开发程序员。写代码时候,有时候条件过多,会有很多ifelse,代码看起来很乱,不够优雅,那如何让代码更优雅呢,如何让代码可读性更强呢,那銘哥就来教你怎么做。注意啊,是过的if-else,如果只是三四个,那就没必......
  • 干掉过多的 if else,让你的代码更优雅
    干掉过多的ifelse,让你的代码更优雅学习改变命运,技术铸就辉煌。大家好,我是銘,全栈开发程序员。写代码时候,有时候条件过多,会有很多ifelse,代码看起来很乱,不够优雅,那如何让代码更优雅呢,如何让代码可读性更强呢,那銘哥就来教你怎么做。注意啊,是过的if-else,如果只是三四个,那......
  • 源生成器:根据需要自动生成机械重复代码
    title:源生成器:根据需要自动生成机械重复代码date:2022-02-02tags:-C#-.NET-Roslyn前言本文概述了利用.NETCompilerPlatform(“Roslyn”)SDK附带的源生成器(SourceGenerator)自动生成机械重复的代码。关于这部分的基础入门知识可以在MSDN[1]学到。本文默认已经有一......