首页 > 其他分享 >代码随想录Day4

代码随想录Day4

时间:2022-10-18 09:24:58浏览次数:41  
标签:return nums int res Day4 随想录 数组 代码 nums2

LeetCode 349: 给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序.

 

 思路:

需要在输出结果中做去重操作,所以可以选择Set来操作。HashSet自带去重。

需要SetA来存放nums1,然后遍历nums2,判断nums2的每个元素是否存在于SetA中

代码:

package com.dwj.LeetCode.HashList;

import java.util.HashSet;
import java.util.Set;

/**
 * 两数组相交,返回相交元素的集合,不含重复元素
 */
public class ArrayBanana {
    class Solution {
        public int[] intersection(int[] nums1, int[] nums2) {
            if (nums1 == null || nums1.length == 0 || nums2 == null || nums2.length == 0) {
                return new int[0];
            }
            Set<Integer> set1 = new HashSet<>();
            Set<Integer> resSet = new HashSet<>();
            //遍历数组1
            for (int i : nums1) {
                set1.add(i);
            }
            //遍历数组2的过程中判断哈希表中是否存在该元素
            for (int i : nums2) {
                if (set1.contains(i)) {
                    resSet.add(i);
                }
            }
            //将结果几何转为数组
            return resSet.stream().mapToInt(x -> x).toArray();
        }
    }
}

 

LeetCode 1.  两数之和

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

 

思路:这一题,判断是否存在,想到可以使用哈希表的方法来做。首先遍历拿到一个数字,然后通过与目标值做减法,判断

这个数字之前是否出现过,如果出现过,返回两个数的下标。由于这一题需要存下标值和元素值,可以使用Map存储,特别

注意的是,map用key存放元素值比较合适,因为我们需要主要判断元素的值。

 

代码:

package com.dwj.LeetCode.HashList;

import java.util.HashMap;
import java.util.Map;

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

LeetCode202 快乐数

对快乐数的定义是:

「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为  1,那么这个数就是快乐数。

如果 n 是快乐数就返回 True ;不是,则返回 False 。

示例:

输入:19
输出:true
解释:
1^2 + 9^2 = 82
8^2 + 2^2 = 68
6^2 + 8^2 = 100
1^2 + 0^2 + 0^2 = 1

是一个把计算通过平方求和延续下去的过程

思路:

首先,判断是否存在,是否出现的问题,想到使用哈希表来做。此题是一个循环判断的问题,首要搞清楚,终止条件是什么?最终的和一直等于1

取每个数的操作可以通过取余和除来完成。要写一个方法来完成对每个数进行平方求和的操作,然后使用wile进行循环判断是否满足继续进行的条件。、

 

代码:

package com.dwj.LeetCode.HashList;

import java.util.HashSet;
import java.util.Set;

public class HappyNumber {
    class Solution {
        public boolean isHappy(int n) {
            Set<Integer> record = new HashSet<>();
            while (n != 1 && !record.contains(n)) {
                record.add(n);
                n = getNextNumber(n);
            }
            return n == 1;
        }

        private int getNextNumber(int n) {
            int res = 0;
            while (n > 0) {
                int temp = n % 10;
                res += temp * temp;
                n = n / 10;
            }
            return res;
        }
    }
}

 

 

总结:在题目给出描述,元素是否出现过,是否存在..... 要想到使用哈希列表来实现。

标签:return,nums,int,res,Day4,随想录,数组,代码,nums2
From: https://www.cnblogs.com/dwj-ngu/p/16800795.html

相关文章

  • vuex 基本代码规范 js 文件
    importVuefrom"vue";importVuexfrom"vuex";import{setItem,getItem}from"@/utils/storage";Vue.use(Vuex);exportdefaultnewVuex.Store({state:{......
  • 覆盖浏览器默认样式CSS代码
    /*http://meyerweb.com/eric/tools/css/reset/  v2.0|20110126  License:none(publicdomain)*/html,body,div,span,applet,object,iframe,h1,h2......
  • 代码随想录算法训练营第六天 | 242.有效的字母异位词 349. 两个数组的交集 202. 快
    时间问题,哈希表理论基础暂且按下不表,直接进入题目笔记。242.有效的字母异位词题目描述给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。示例1:......
  • 解析目标检测全流程!附代码数据
    作者:王程伟,算法工程师在计算机视觉中,红外弱小目标检测是一个重要的方向,但直到近一两年,才开始运用一些深度学习的方法。深度学习自2012年就开始大火,为何近一两年才更多被应用......
  • EMF代码生成
    介绍基于Eclipse的模型框架。它是EclipseMDA(ModelDrivenArchitecture)的一个重要组成部分,是Eclipse中许多项目的基础(e.g,GEF),EMF可以将模型转换成高效的,正确的,和易于......
  • 记一次代码合并操作.
    当前的项目开发中,使用的版本管理工具为GIT,这个工具也是很多公司在使用的工具。在以前接触过的项目中,经常使用的开发方式是使用一个主干进行开发,或者是使用一个分支进......
  • day49-JDBC和连接池05
    JDBC和连接池0511.BasicDAO先来分析一个问题前面我们使用了Apache-DBUtils和Druid简化了JDBC开发,但仍存在以下不足:SQL语句是固定的,不能通过参数传入,通用性不好,需要......
  • PXE启动芯片出错代码表初始化/引导/载入Bootstrap错误代码
    PXE-E00:Couldnotfindenoughfreebasememory.PXE主代码和UNDI运行时模块从闪存或上位内存拷贝至基本内存顶部480K(78000h)至640K(A0000h)的剩余空间位置,这段内存必须......
  • git commit 提交 格式化代码
    一,yarnadd--dev--exactprettier二,echo{}>.prettierrc.json三,prettier.json 文件添加buildcoverage 四,yarnaddeslint-config-prettier-D在package......
  • 代码的结构
    前言通常而言,代码的结构有顺序结构,循环结构和选择结构。一、顺序结构顺序结构是最简单的结构,只需要你顺着往下打就行了,比如 inta=0,b=0,c=0; scanf("%d%d",&a,&b);......