当前位置: 首页 > news >正文

代码随想录算法训练营第四天| 242.有效的字母异位词 、 349. 两个数组的交集 、 202. 快乐数 、1. 两数之和

242.有效的字母异位词 

思路:设立一个数组(int(26)),每个位置存放26个英文字母的数量,然后遍历统计第一个字符串中的字母出现的数量,遍历第二个字符串时,让对应的字母位置的数字-1,最后看是否数组中的数字都为0。

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

349. 两个数组的交集 

初始思路:和上一题一样;

随想录思路:如果存储元素的值没有范围,可以使用set。

class Solution {public int[] intersection(int[] nums1, int[] nums2) {if(nums1 == null || nums2 == null || nums1.length == 0 || nums2.length == 0) return new int[0];Set<Integer> set1 = new HashSet<>(); Set<Integer> set2 = new HashSet<>();for(int i : nums1){set1.add(i);}for(int i : nums2){if(set1.contains(i))set2.add(i);}return set2.stream().mapToInt(Integer::intValue).toArray();}
}

202. 快乐数 

初始思路:没想到解决思路

随想录思路:首先,只有值重复出现时才会无限循环下去。所以需要判断值是否重复,判断值是否重复就要用到哈希。

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

1. 两数之和

初始思路:暴力遍历数组。

                或者,先把数组转为hashset,然后让目标值减去每一个数,若差值大于0,则判断hashset中有没有这个差值。(找下标代价太大)

随想录思路:使用了hashmap,因为我们需要得到下标,还需要判断对应的值是否存在。

class Solution {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);break;}map.put(nums[i], i);}return res;}
}

鉴于作者水平有限,文章可能存在错误

如有指正,十分感谢

http://www.lqws.cn/news/76483.html

相关文章:

  • 5.RV1126-OPENCV 图形计算面积
  • Android基于LiquidFun引擎实现软体碰撞效果
  • android binder(二)应用层编程实例
  • 循序渐进 Android Binder(一):IPC 基本概念和 AIDL 跨进程通信的简单实例
  • 基于 Android 和 JBox2D 的简单小游戏
  • 实验一:PyTorch基本操作实验
  • 力扣热题100之对称二叉树
  • LeetCode 热题 100 394. 字符串解码
  • C#项目07-二维数组的随机创建
  • CppCon 2014 学习:Exception-Safe Coding
  • Python----目标检测(《YOLOv3:AnIncrementalImprovement》和YOLO-V3的原理与网络结构)
  • Python----目标检测(训练YOLOV8网络)
  • FreeBSD 14.3 候选版本附带 Docker 镜像和关键修复
  • 嵌入式鸿蒙开发环境搭建操作方法与实现
  • web架构3------(nginx的return跳转,gzip压缩,目录浏览,访问控制和location符号优先级)
  • 分布式锁剖析
  • 2025/6月最新Cursor(0.50.5版本)一键自动更换邮箱无限续杯教程
  • 05.MySQL表的约束
  • 牛客小白月赛117
  • Linux 权限管理入门:从基础到实践
  • OpenCV4.4.0下载及初步配置(Win11)
  • PCA(K-L变换)人脸识别(python实现)
  • 从【0-1的HTML】第1篇:HTML简介
  • C++ - 标准库之 <sstream> ostringstream(ostringstream 概述、基本使用、清空内容、进阶使用)
  • 房屋租赁系统 Java+Vue.js+SpringBoot,包括房屋信息、看房申请、租赁合同、房屋报修、收租信息、维修数据、租客管理、公告管理模块
  • 系统调用与程序接口的关系
  • [leetcode] 二分算法
  • 线程间和进程间是如何进行通信
  • day17 leetcode-hot100-34(链表13)
  • Oracle的Hint