LeetCode刷题日记之链表II

news/2025/2/22 22:33:08/

1.四数相加II

题目描述

在这里插入图片描述

解题思路

1.定义一个哈希Map,其中key存放两数之和,value存放两数和出现的次数。
2.遍历统计出nums1和nums元数相加和出现的次数(a+b)。
3.遍历nums3和nums4,并求和(c+d),统计出(0-(c+d))在Map中出现的次数。
4.返回(0-(c+d))出现次数的累加和。

var fourSumCount = function(nums1, nums2, nums3, nums4) {let map = new Map()let result = 0;for(let i = 0;i<nums1.length;i++) {for(let j = 0;j<nums2.length;j++) { // 统计前两个数组元素之和let tmp = nums1[i] + nums2[j]if(map.has(tmp)){map.set(tmp,map.get(tmp) + 1)} else {map.set(tmp,1)}}}for(let i=0;i<nums3.length;i++) {for(let j = 0;j<nums4.length;j++) {let tmp = nums3[i] + nums4[j]if(map.has(0-tmp)){ // 如果map中存在 说明四数相加等于0result += map.get(0-tmp)}}}return result
};

2.赎金信

题目描述

在这里插入图片描述

解题思路

1.定义一个哈希Map,其中key存放ransomNote中的每个字母,value表示每个字母出现的次数。
2.遍历ransomNote字符串,统计每个字母出现的次数。
3.遍历magazine字符串,Map中的每个字母减去对应的次数。
4.遍历map,判断是否有字母出现次数大于0,有则返回false,否则返回true.

var canConstruct = function(ransomNote, magazine) {let map = new Map();for(let i = 0;i<ransomNote.length;i++) {map.set(ransomNote[i],(map.get(ransomNote[i])|| 0)+1)}for(let i = 0;i<magazine.length;i++) {if(map.has(magazine[i])) {map.set(magazine[i],map.get(magazine[i]) - 1)}}for(let [k,v] of map) {if(v > 0) {return false}}return true
};

3.三数之和

题目描述

在这里插入图片描述

解题思路

1.将数组按照从小到大的顺序排序。
2.遍历数组,在循环中使用双指针,其中左指针表示循环索引+1,右指针为数组末位索引。
3.判断nums[i]+nums[left]+nums[right]=sum和与0的大小。
4.如果sum>0,则右指针左移,如果sum<0,左指针右移,如果sum==0,将对应数据添加入结果中。
5.下次循环继续如此操作,循环中注意去重剪枝。

var threeSum = function(nums) {let result = [];nums = nums.sort((a,b) => a-b)for(let i = 0;i<nums.length;i++) {if(nums[i] > 0) {return result}if(i>0&&nums[i] == nums[i-1]) {continue}let left = i + 1;let right = nums.length -1while(left<right) { // i j k 不相等 所以这儿不能又等于let tmp = nums[i] + nums[left] + nums[right]if(tmp > 0) {right --} else if(tmp<0) {left ++} else {result.push([nums[i],nums[left],nums[right]])while(left<right && nums[right] == nums[right - 1]) right--while(left<right && nums[left] == nums[left+1]) left++ // 去重left ++right -- // 区间缩小}}}return result
};

4.四数之和

题目描述

在这里插入图片描述

解题思路

本题解题思路和三数之和相同,只需将外部循环改为双重循环即可。

var fourSum = function(nums, target) {nums = nums.sort((a,b) => a- b);const result = [];for(let i = 0;i<nums.length;i++) {if(nums[i]>target&&target>0){break; // 剪枝}if(i>0&&nums[i] === nums[i-1]){continue; // 去重}for(let j = i+1;j<nums.length-1;j++){if(nums[i] + nums[j] > target&&target>0){break; // 剪枝}if(j>i+1&&nums[j] == nums[j-1]){continue // 去重}const twoSum = nums[i] + nums[j]let left = j+1;let right = nums.length-1while(left<right){if(twoSum + nums[left]+nums[right] === target) {result.push([nums[i],nums[j],nums[left],nums[right]])while(right>left&&nums[right] == nums[right-1]) {right--}while(right>left&&nums[left] == nums[left+1]){left++}left++right--;} else if(twoSum + nums[left] + nums[right] > target) {right --} else  {left++;}} }}return result
};

http://www.ppmy.cn/news/3313.html

相关文章

Opencv项目实战:17 贪吃蛇游戏

目录 0、项目介绍 1、效果展示 2、项目搭建 3、项目代码展示与讲解 4、项目资源 5、项目总结 0、项目介绍 这次是一个有意思的计算机视觉游戏——贪吃蛇&#xff0c;我们以食指为蛇头&#xff0c;不断的移动我们的手指&#xff0c;当吃到甜甜圈的时候&#xff0c;蛇身增…

Mongodb数据库的安装部署及基本使用

Mongodb数据库的安装部署及基本使用一、Mongodb数据库介绍1.Mongodb简介2.Mongodb适用场景3.MongoDB特性二、检查本地系统环境1.检查系统版本2.检查yum仓库三、Mongodb的安装1.配置Mongodb的yum源2.安装Mongodb3.修改绑定IP4.启动Mongodb服务四、检查Mongodb状态1.查看Mongodb服…

Python中ArcPy基于矢量范围批量裁剪大量栅格遥感影像

本文介绍基于Python中ArcPy模块&#xff0c;基于矢量数据范围&#xff0c;对大量栅格遥感影像加以批量裁剪掩膜的方法。 本文所需要的代码如下所示。 # -*- coding: utf-8 -*- """ Created on Tue Dec 13 20:07:48 2022author: fkxxgis """impo…

IT Resilience vs. Disaster Recovery 谈谈对弹性与灾备的理解

背景 在大型企业中&#xff0c;可能会花很多时间考虑灾难恢复以及如何避免灾难恢复。毕竟&#xff0c;这是一场噩梦——一场自然灾难或人为破坏的灾难&#xff0c;会摧毁你的IT基础设施&#xff0c;让企业团队陷入困境。 灾难恢复&#xff08;DR&#xff09;和IT Resilience …

Spring Boot使用EasyExcel导入导出Excel

一、导入依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.1.6</version></dependency> 二、实现导出excel操作 1、对我们需要导出的实体类上加上注解&#xff0c;如下&#…

一个关于React数据不可变的无聊问题

对于一个React的开发者来说不知道你有没有想过为什么React追求数据不可变这个范式&#xff1b; 一个月前我想过一个问题如果我在使用useState这个hooks的时候传入的是一个改变后的引用类型对象会发生什么&#xff1f; 例如&#xff1a; import {useState} from "react&…

Python3.1 使用卡通头像网络模型生成卡通头像(基于GAN)

使用GAN网络生成卡通头像 提示&#xff1a;当前生成方法仅为实验场景 参考地址 使用GAN网络模型生成卡通头像使用GAN网络生成卡通头像前言一、下载模型二、编写生成卡通头像Python代码1.引入库2.加载模型3.生成卡通头像方法总结前言 随着人工智能的不断发展&#xff0c;机器学…

大数据面试之Spark基础常见题目

大数据面试之Spark基础常见题目 1.1 Spark解决什么问题 ​ Hadoop主要解决海量数据的存储和海量数据的计算。 ​ Spark主要解决海量数据的计算。存储还是交给HDFS。 1.2 Spark为什么会有自己的资源调度器 ​ Hadoop的YARN框架比Spark框架诞生的晚&#xff0c;因为YARN是在…