SouthLeetCode-打卡24年02月第2周

SouthLeetCode-打卡24年02月第2周

// Date : 2024/02/05 ~ 2024/02/11

039.有效的字母异位词

(1) 题目描述

039#LeetCode.242.简单题目链接#Monday2024/02/05

给定两个字符串 *s**t* ,编写一个函数来判断 *t* 是否是 *s* 的字母异位词。

**注意:**若 *s**t* 中每个字符出现的次数都相同,则称 *s**t* 互为字母异位词。

(2) 题解代码

Version1.0

class Solution {class Box{String str;int len;HashMap<Character,Integer> map;Box(String str){this.str = str;this.len = str.length();this.map = new HashMap();}// 这段代码可以优化// 优化后HashMap<Character,Integer> initMap(){for(char curChar : str.toCharArray()){map.put(curChar, map.getOrDefault(curChar, 0) + 1);}return map;}}public boolean isAnagram(String s, String t) {Box sBox = new Box(s);Box tBox = new Box(t);HashMap m1 = sBox.initMap();HashMap m2 = tBox.initMap();return m1.equals(m2);}
}

V1-Tip

// 优化前的initMap
HashMap<Character,Integer> initMap(){char curChar;int curVal;for(int i=0 ; i<len ; i++){curChar = str.charAt(i);if(map.containsKey(curChar)){curVal = map.get(curChar)+1;}else{curVal = 1;}map.put(curChar, curVal);}return map;
}

Version2.0

class Solution {class Box{String str;int len;HashMap<Character,Integer> map;Box(String str){this.str = str;this.len = str.length();this.map = new HashMap();for(char curChar : str.toCharArray()){map.put(curChar, map.getOrDefault(curChar, 0) + 1);}}}public boolean isAnagram(String s, String t) {Box sBox = new Box(s);Box tBox = new Box(t);return sBox.map.equals(tBox.map);}
}

040.两个数组的交集Ⅰ

(1) 题目描述

040#LeetCode.349.简单题目链接#Tuesday2024/02/06

给你两个整数数组 nums1nums2 ,请你以数组形式返回两数组的交集。

返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。

可以不考虑输出结果的顺序。

(2) 题解代码

class Solution {int[] listToArray(HashSet<Integer> set){int[] array = new int[set.size()];int index = 0;for (Integer element : set) {array[index++] = element;}return array;}public int[] intersection(int[] nums1, int[] nums2) {HashMap<Integer,Integer> map = new HashMap();HashSet<Integer> resSet = new HashSet<>();int i=0;for(int curVal : nums1){map.put(curVal, 1);}for (int curVal : nums2) {if(map.containsKey(curVal)){resSet.add(curVal);}}return setToArray(resSet);}
}

041.两个数组的交集Ⅱ

(1) 题目描述

041#LeetCode.350.简单题目链接#Tuesday2024/02/06

给你两个整数数组 nums1nums2 ,请你以数组形式返回两数组的交集。

返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。

可以不考虑输出结果的顺序。

(2) 题解代码

class Solution {class Box{int len;Map<Integer, Integer> map;Box(int[] nums){len = nums.length;map = new HashMap<Integer, Integer>();for (int num : nums) {int count = map.getOrDefault(num, 0) + 1;map.put(num, count);}}}public int[] intersect(int[] nums1, int[] nums2) {Box box1 = new Box(nums1);Box box2 = new Box(nums2);if (box1.len > box2.len) {return intersect(nums2, nums1);}int[] result = new int[box1.len];int index = 0;for (int num : nums2) {int count = box1.map.getOrDefault(num, 0);if (count > 0) {result[index++] = num;count--;if(count > 0){box1.map.put(num, count);}else{box1.map.remove(num);}}}return Arrays.copyOfRange(result, 0, index);}
}

042.快乐数

(1) 题目描述

042#LeetCode.202.简单题目链接#Wednesday2024/02/07

(2) 题解代码

class Solution {private int getNext(int n) {int totalSum = 0;while (n > 0) {int d = n % 10;n = n / 10;totalSum += d * d;}return totalSum;}public boolean isHappy(int n) {Set<Integer> seen = new HashSet<>();while (n != 1 && !seen.contains(n)) {seen.add(n);n = getNext(n);}return n == 1;}
}

043.字符串中的单词数

(1) 题目描述

043#LeetCode.434.简单题目链接#北岸计划2024/02/07

(2) 题解代码

class Solution {public int countSegments(String s) {int size = s.length();int res = 0;for(int i=0 ; i<size ; i++){boolean flag = (i == 0 || s.charAt(i - 1) == ' ') && s.charAt(i) != ' ';if(flag){res++;}}return res;}
}

044.两数之和

(1) 题目描述

044#LeetCode.001.简单题目链接#Thursday2024/02/08

(2) 题解代码

Version1.0

class Solution {int[] result(int i, int j){int[] res = new int[2];res[0] = i;res[1] = j;return res;}public int[] twoSum(int[] nums, int target) {for(int i=0 ; i<nums.length ; i++){for(int j=i+1 ; j<nums.length ; j++){boolean flag = nums[i] + nums[j] == target;if(flag){return result(i,j);}}}return null;}
}

Version2.0

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

045.赎金信

(1) 题目描述

045#LeetCode.383.简单题目链接#Thursday2024/02/08

(2) 题解代码

class Solution {static boolean isSubsetOf(Map<Character, Integer> subset,Map<Character, Integer> parent){// 遍历子集的所有键值对for (Map.Entry<Character, Integer> entry : subset.entrySet()) {Character key = entry.getKey();Integer value = entry.getValue();// 检查子集的键是否存在于父哈希表中if (!parent.containsKey(key)) {return false;}// 检查子集的值是否与父哈希表中对应键的值相等// if (!parent.get(key).equals(value)) {// return false;// }if (parent.get(key) < value) {return false;}}// 子集中的所有键值对都存在于父哈希表中且对应的值也相等return true;}class Box{HashMap<Character,Integer> map = new HashMap<>();Box(String str){int len = str.length();for(int i=0 ; i<len ; i++){char ch = str.charAt(i);map.put(ch,map.getOrDefault(ch,0)+1);}}}public boolean canConstruct(String ransomNote, String magazine) {Box box1 = new Box(ransomNote);Box box2 = new Box(magazine);boolean result = isSubsetOf(box1.map,box2.map);return result;}
}

046.三数之和

(1) 题目描述

046#LeetCode.046.中等题目链接#Friday2024/02/09

(2) 题解代码

class Solution {public List<List<Integer>> threeSum(int[] nums) {int length = nums.length;int sum = -1;int left = 0;int right = length-1;List<List<Integer>> results = new ArrayList<>();if(nums == null || length < 3) return results;Arrays.sort(nums);for(int i=0; i<length-2 ; i++){if(nums[i] > 0){return results;}if(i > 0 && nums[i] == nums[i-1]){continue;}left = i+1 ;right = length-1;while(left < right){sum = nums[i] + nums[left] + nums[right];if(sum == 0){List<Integer> array = new ArrayList<>();array.add(nums[i]);array.add(nums[left]);array.add(nums[right]);results.add(array);while(left < right && nums[left] == nums[left+1]){left++;}while(left < right && nums[right] == nums[right-1]){right--;}left++;right--;}else if(sum < 0){left++;}else if(sum > 0){right--;}}}return results;}
}

047.四数之和

(1) 题目描述

047#LeetCode.018.中等题目链接#Saturday2024/02/10

给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复):

  • 0 <= a, b, c, d < n
  • abcd 互不相同
  • nums[a] + nums[b] + nums[c] + nums[d] == target

你可以按 任意顺序 返回答案 。

(2) 题解代码

class Solution {
public List<List<Integer>> fourSum(int[] nums,int target){List<List<Integer>> result=new ArrayList<>();if(nums==null||nums.length<4){return result;}Arrays.sort(nums);int length=nums.length;for(int k=0;k<length-3;k++){if(nums[k] > 0 && nums[k] > target) break;if(k>0&&nums[k]==nums[k-1]){continue;}long min1=(long)nums[k]+nums[k+1]+nums[k+2]+nums[k+3];if(min1>target){break;}long max1=(long)nums[k]+nums[length-1]+nums[length-2]+nums[length-3];if(max1<target){continue;}for(int i=k+1;i<length-2;i++){if(nums[i] > 0 &&(long)nums[k] + nums[i] > target) break;if(i>k+1&&nums[i]==nums[i-1]){continue;}int j=i+1;int h=length-1;long min=(long)nums[k]+nums[i]+nums[j]+nums[j+1];if(min>target){break;}long max=(long)nums[k]+nums[i]+nums[h]+nums[h-1];if(max<target){continue;}while (j<h){long curr=(long)nums[k]+nums[i]+nums[j]+nums[h];if(curr==target){result.add(Arrays.asList(nums[k],nums[i],nums[j],nums[h]));j++;while(j<h&&nums[j]==nums[j-1]){j++;}h--;while(j<h&&i<h&&nums[h]==nums[h+1]){h--;}}else if(curr>target){h--;}else {j++;}}}}return result;}
}

048.四数相加Ⅱ

(1) 题目描述

048#LeetCode.454.中等题目链接#Sunday2024/02/11

给你四个整数数组 nums1nums2nums3nums4 ,数组长度都是 n

请你计算有多少个元组 (i, j, k, l) 能满足:

  • 0 <= i, j, k, l < n
  • nums1[i] + nums2[j] + nums3[k] + nums4[l] == 0

(2) 题解代码

class Solution {public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {Map<Integer, Integer> map = new HashMap<>();int res = 0;for (int num1 : nums1) {for (int num2 : nums2) {int sum = num1 + num2;map.put(sum, map.getOrDefault(sum, 0) + 1);}}for (int num3 : nums3) {for (int num4 : nums4) {int complement = -(num3 + num4);res += map.getOrDefault(complement, 0);}}return res;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/695808.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IDEA 2021.3激活

1、打开idea&#xff0c;在设置中查找Settings/Preferences… -> Plugins 内手动添加第三方插件仓库地址&#xff1a;https://plugins.zhile.io搜索&#xff1a;IDE Eval Reset 插件进行安装。应用和使用&#xff0c;如图

Java时间操作之LocalDateTime

Java时间操作之LocalDateTime 一、介绍二、使用步骤1、输出时间2、日期时间的加减 一、介绍 LocalDate: 表示没有时区的日期, LocalDate是不可变并且线程安全的 LocalTime: 表示没有时区的时间, LocalTime是不可变并且线程安全的 LocalDateTime: 表示没有时区的日期时间, Loca…

探秘SuperCLUE-Safety:为中文大模型打造的多轮对抗安全新框架

探秘SuperCLUE-Safety&#xff1a;为中文大模型打造的多轮对抗安全新框架 进入2023年以来&#xff0c;ChatGPT的成功带动了国内大模型的快速发展&#xff0c;从通用大模型、垂直领域大模型到Agent智能体等多领域的发展。但是生成式大模型生成内容具有一定的不可控性&#xff0c…

【数据库】达梦数据库DM8开发版安装

目录 一、达梦数据库概述 1.1 达梦数据库简介 1.2 产品特性 1.3 产品架构 二、安装前准备 2.1 新建 dmdba 用户 2.2 修改文件打开最大数 2.3 挂载镜像 2.4 新建安装目录 2.5 修改安装目录权限 三、数据库安装 3.1 命令行安装 3.2 配置环境变量 四、配置实例 4.1…

LeetCode 热题 100 | 二叉树(下)

目录 1 114. 二叉树展开为链表 2 105. 从前序与中序遍历序列构造二叉树 3 437. 路径总和 III 菜鸟做题&#xff08;即将返校版&#xff09;&#xff0c;语言是 C 1 114. 二叉树展开为链表 题眼&#xff1a;展开后的单链表应该与二叉树 先序遍历 顺序相同。 而先序遍历就…

大语言模型的深度裁剪法

在人工智能领域&#xff0c;大语言模型&#xff08;LLMs&#xff09;已经成为推动语言理解和生成任务进步的重要力量。随着模型规模的不断扩大&#xff0c;如何优化这些模型的计算效率成为了一个迫切需要解决的问题。大型语言模型通常包含数十亿甚至数千亿的参数&#xff0c;这…

四、分类算法 - 朴素贝叶斯算法

目录 1、朴素贝叶斯算法 1.1 案例 1.2 联合概率、条件概率、相互独立 1.3 贝叶斯公式 1.4 朴素贝叶斯算法原理 1.5 应用场景 2、朴素贝叶斯算法对文本进行分类 2.1 案例 2.2 拉普拉斯平滑系数 3、API 4、案例&#xff1a;20类新闻分类 4.1 步骤分析 4.2 代码分析 …

conda下tensorflow安装

conda create -n tf21 python3.7 conda activate tf21 conda install tensorflow-gpu2.1验证 import tensorflow as tf tf.test.is_built_with_cuda()

# 二进制+Html

二进制是一种数制&#xff0c;也称为基数为2的数制。在二进制系统中&#xff0c;数值使用0和1这两个数字来表示。每一位二进制数字称为一个比特&#xff08;bit&#xff09;&#xff0c;是计算机中最基本的信息单位。多个比特组合在一起可以表示更大的数值或数据。 在计算机科…

职业技能鉴定服务中心前端静态页面(官网+证书查询)

有个朋友想做职业技能培训&#xff0c;会发证书&#xff0c;证书可以在自己网站可查。想做一个这样的网站&#xff0c;而且要特别土&#xff0c;一眼看上去像xxx官方网站&#xff0c;像jsp .net技术开发的网站。用htmlcssjquery还原了这样子一个前端页面&#xff0c;这里分享给…

如何使用 GitHub Action 在 Android 中构建 CI-CD

如何使用 GitHub Action 在 Android 中构建 CI-CD 一、什么是 CI/CD&#xff1f;二、什么是 CI&#xff1a;持续集成&#xff1f;三、什么是CD&#xff1a;持续部署&#xff1f;3.1 持续交付3.2 持续部署 四、使用 GitHub 操作在 Android 中构建 CI-CD 管道4.1 步骤 五、什么是…

JAVA工程师面试专题-并发编程篇

目录 一、线程 1、并发与并行的区别 2、同步和异步的区别 3、Java中创建线程有哪些方式? 4、Thread和Runnable的区别 5、Java中的Runnable、Callable、Future、FutureTask的区别和联系&#xff1f; 6、说一下你对 CompletableFuture 的理解 7、volatile关键字有什么用&…

SQL Server查询计划(Query Plan)——XML查询计划

​​​​​​6.4.3. XML查询计划 SQL Server中,除了通过GUI工具和相关命令获取图形及文本查询计划外,我们还可以通过相关命令获取XML格式的查询计划,这里惯称其为XML查询计划。 SQL Server 2005版本引入了XML查询计划的新特性,其充分吸收了图形及文本查询计划的优势所在,…

c sharp资料

资料 c#菜鸟教程 Xml XmlNode 类 XPath或运算

electron学习和新建窗口

首先我们要先下载electron npm install --save-dev electron 建立入口文件main.js 新建一个入口文件 main.js&#xff0c;然后导入eletron新建一个窗口。 const { app, BrowserWindow, ipcMain } require("electron"); const path require("path");func…

215数组中的第K个最大元素

215数组中的第K个最大元素 题目描述 给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。 请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。…

centos或者 ubuntu 查找当前目录所有文件包含指定值的文件地址

出现环境是我的nginx缓存 缓存了一个css 但是这个css不是最新的了 所以直接在缓存的目录下执行 find /data -type f -exec grep -l "被缓存文件的内容" {} 找到以后直接vi 查看一下 如果内容没问题的话 直接 rm -rf 删除了就可以了

Async注解详解-Async的作用以及原理

文章目录 起因Async作用原理EnableAsyncAsyncAnnotationBeanPostProcessor 起因 作为一个菜鸟&#xff0c;总是会遇到各种匪夷所思的bug。今天&#xff0c;不出意外的话今天我又遇到了意外…bug… 我在调用同事的一个方法时&#xff0c;莫名奇妙的报了空指针&#xff0c;当前…

压缩感知的图像仿真(MATLAB源代码)

压缩感知是一种用于高效获取和表示信号的技术&#xff0c;它可以显著减少数据的采样和传输量&#xff0c;同时保持对信号的高质量恢复能力。在压缩感知中&#xff0c;信号被表示为其在一个稀疏基中的稀疏线性组合。通过仅使用少量的随机投影测量&#xff0c;就能够捕捉信号的大…

报表控件Stimulsoft 新版本2024.1中,功能区工具栏新功能

今天&#xff0c;我们将讨论Stimulsoft Reports、Dashboards 和 Forms 2024.1版本中的一项重要创新 - 在一行中使用功能区工具栏的能力。 Stimulsoft Ultimate &#xff08;原Stimulsoft Reports.Ultimate&#xff09;是用于创建报表和仪表板的通用工具集。该产品包括用于WinF…